Java上的Pre和post。不生效?
这打印出12,我猜x永远不会更改,因为它是在post(x--)生效之前存储的,但是为什么x--永远不会生效?Java上的Pre和post。不生效?,java,int,post-increment,pre-increment,Java,Int,Post Increment,Pre Increment,这打印出12,我猜x永远不会更改,因为它是在post(x--)生效之前存储的,但是为什么x--永远不会生效?--中的x--确实生效。但是,您没有看到它,因为您将预减量x的值重新分配到x中 下面是执行x=x--时发生的情况: x的值被存储到一个临时空间中(例如,tempX) 从x 新值被分配回x 一旦右侧完成计算,tempX被分配回x 这会产生x不被更改的总体效果 y=--y的效果不同,因为表达式--y的值与减量后y的值相同,因此总体效果与--y相同,简言之,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
将步骤1中加载的值存储回x
=>x
返回到12
int x = 12;
int y = 15;
while (y >= 0)
{
x = x--;
y = --y;
}
System.out.print(x);