gpt4 book ai didi

javascript - 赋值运算符,为什么结果是-3?

转载 作者:行者123 更新时间:2023-11-30 15:16:15 25 4
gpt4 key购买 nike

在 JavaScript 语言中

var a=3;
a += a -= a*a; //-3

C语言中:

int a=3;
a += a -= a*a; //-12

最佳答案

在 JS 中,+=*+= 等运算符的操作数始终是从左到右评估。所以这里发生的事情是,一步一步:

var a = 3;             // a = undefined
a += (a -= a*a); // a = 3
a = 3 + (a -= a*a); // a = 3
a = 3 + (a = 3 - a*a); // a = 3
a = 3 + (a = 3 - 3*a); // a = 3
a = 3 + (a = 3 - 3*3); // a = 3
a = 3 + (a = 3 - 9); // a = 3
a = 3 + (a = -6); // a = 3
a = 3 + -6; // a = -6
a = -3; // a = -6
-3; // a = -3

相比之下,您的 C 代码仅在计算右侧操作数之后才计算左侧 a,此时 a 的值为-6,然后将其添加到自身。然而,C 语言将此保留为未定义的行为,并且没有定义计算的特定顺序,因此您只能将其视为编译器的工件。有关详细信息,请参阅@Kay 的评论。

关于javascript - 赋值运算符,为什么结果是-3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com