让我们尝试扩展您的最后一个表达式。
评估为
x = x^(y = y^ (x = x^y));
需要注意的是表达式从评估 左 到 右 ,
它成为了,
x = 4 ^ (y = 3 ^ (x = 4 ^ 3));
现在,问题已变得显而易见。对?
编辑:
为了消除混乱,让我尝试通过从左到右的评估来解释我的意思。
int i = 1;s = i + (i = 2) + i;
现在,该表达式的计算结果为
s = 1 + 2 + 2;
请注意,赋值
i的 左边 是
1,但是赋值的 右边
(和赋值上)被评估为
2,因为评估是从左到右,当涉及表达式的第二部分和第三部分时,
is的值为
2。



