我刚刚测试了以下代码:
int x = 90;
x = x - (x = x - 1);
System.out.print(x);
它打印出1。
据我理解,事情按以下顺序进行:
- 计算并将
x-1
存储到内存中的临时变量中。 - 将
x
赋值为项目1的临时变量的结果。 - 然后计算
x-新x的值
。 - 结果被分配给
x
;
我不明白为什么在第2项的结果之后,我们从中减去x
,但x
仍然具有初始值。我错过了什么?
x = x - (x = x - 1);
等价于x = 90 - (x = x - 1);
,其中 x 的值被更新为 x 减去一个表达式的结果。该表达式先将 x 减去 1,然后将减去 1 后的值赋给 x,最终得到的结果是 1。因此,代码的最终结果是将 x 的值设置为 1。 - Turing85