想问问x+=y+=z的具体运算顺序?!

img

想问问为什么x会等于1呀?不应该是x =x+y等于2
然后y = y+z;y=0吗?
难道这个运算顺序是从右边到左边吗?

x+=y+=z 等价于 x = x + (y+=z)等价于x = x + (y = y + z)
y = y + z使得y = 0
x = x + y使得x = 1

x+=y+=z 相当于 x = x + (y+=z)
x = x + (y+=z)相当于x = x + (y = y + z)
(y = y + z)为假,值为 0
x = x + (y = y + z)=x+0=1

我觉得是同级的,不需要+括号,就是x+=y让x的值等于2,然后x+=z,又让x的值变成1了。

运算符+=的结合律是从右到左的,所以x += y += z;等价于x += (y += z),即先算y += z,这个表达式的值是赋值后的y值,然后再算 x += y赋值后的值

参考
https://en.cppreference.com/w/cpp/language/operator_precedence