【发布时间】:2016-12-27 19:36:39
【问题描述】:
让我们考虑
int x=1;
int y1 = (x=10) + x;
System.out.println(y1);
// prints 20
x = 1;
int y2 = x + (x=10);
System.out.println(y2);
// prints 11
在第一个例子中,() 是最先执行的,因为它的优先级最高;将 x 值设置为 10,因此右侧操作数 (x) 获得新值 10,因此 y1 = 10+10 = 20
在第二个例子中,左边的操作数'x'得到它的值1,然后()被执行并且x得到它的新值10,所以y2 = 1+10 = 11;
为什么在第二个例子中, () 没有被首先执行;所以 (x=10) 首先执行,左侧操作数 x 应设置为其新值 10,因此 y2 = 20;但事情不是这样发生的?
【问题讨论】:
-
不要将优先级与操作数的计算顺序混淆。