int x = 12;
int y = 15;
while (y >= 0)
{
x = x--;
y = --y;
}
System.out.print(x);
这打印出12,我猜x永远不会改变,因为它是在帖子(x--)生效之前存储的,但为什么x--永远不会生效?
答案 0 :(得分:1)
--
中的 x--
确实生效了。但是,您没有看到它,因为您将预先减量x
的值分配回x
。
执行x = x--
时会发生以下情况:
x
的值会存储到临时空间(例如tempX
)x
x
tempX
将被分配回x
这会产生x
未被更改的整体效果。
y = --y
的效果不同,因为表达式--y
的值与递减后的y
的值相同,因此整体效果与{{1}相同}}
答案 1 :(得分:1)
简而言之,x = x--;
执行以下操作:
x
加载到操作数堆栈(值为12
)。x
,其值现在为11
。x
==> x
返回12
。