Java上的前后发布。没有生效?

时间:2015-02-28 19:08:49

标签: java post int pre

int x = 12;     
int y = 15;      
while (y >= 0)     
{      
     x = x--;     
     y = --y;     
}      
System.out.print(x);     

这打印出12,我猜x永远不会改变,因为它是在帖子(x--)生效之前存储的,但为什么x--永远不会生效?

2 个答案:

答案 0 :(得分:1)

--中的

x--确实生效了。但是,您没有看到它,因为您将预先减量x的值分配回x

执行x = x--时会发生以下情况:

  • x的值会存储到临时空间(例如tempX
  • x
  • 中减去一个
  • 将新值分配回x
  • 右侧完成计算后,tempX将被分配回x

这会产生x未被更改的整体效果。

y = --y的效果不同,因为表达式--y的值与递减后的y的值相同,因此整体效果与{{1}相同}}

答案 1 :(得分:1)

简而言之,x = x--;执行以下操作:

  1. 将变量x加载到操作数堆栈(值为12)。
  2. 减少x,其值现在为11
  3. 将步骤1中加载的值存储回x ==> x返回12