int x = 12;
int y = 15;
while (y >= 0)
{
x = x--;
y = --y;
}
System.out.print(x);
此打印输出12,我猜x永远不会更改,因为它存储在帖子(x--)生效之前,但是为什么x--永远不会生效?
--
中的[x--
]确实生效。但是,您看不到它,因为您将递减前的值x
直接分配回了x
。
这是x = x--
发生的事情:
x
的值被存储到临时空间(例如,tempX
)x
中减去一个x
tempX
分配回x
这将使x
的整体效果保持不变。
y = --y
的效果不同,因为表达式--y
的值与减后的y
的值相同,因此总体效果与--y
相同。
简单地说,x = x--;
执行以下操作:
x
加载到操作数堆栈(值为12
)。x
,其值现在为11
。x
==> x
返回至12
。