在表达式中,+=是加法赋值运算符的行为。
- 论坛
- 在表达式中,+=是加法赋值运算符的行为。
28 浏览
在表达式中,+=是加法赋值运算符的行为。
最近我遇到了这个问题:赋值运算符链的理解。当回答这个问题时,我开始怀疑自己对加法赋值运算符+=
或其他赋值运算符(&=
,*=
,/=
等)行为的理解。
我的问题是,变量a
在下面的表达式中何时会被原地更新,以便在评估过程中其更改后的值在其他地方反映出来,以及背后的逻辑是什么?请看下面的两个表达式:
表达式1
a = 1 b = (a += (a += a)) //结果是b = 3,但如果a被原地更新,那么结果应该是4
表达式2
a = 1 b = (a += a) + (a += a) //结果是b = 6,但如果a没有被原地更新,那么结果应该是4
在第一个表达式中,当最内层的表达式(a += a)
被评估时,似乎没有更新a
的值,因此结果为3
而不是4
。
然而,在第二个表达式中,a
的值被更新,所以结果是6。
我们应该在什么情况下假设a
的值会在表达式的其他地方反映出来,什么情况下不会呢?