Java上的Pre和post。不生效?

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--是否执行以下操作: 将变

这打印出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
    加载到操作数堆栈(值为
    12
  • 减量
    x
    ,其值现在为
    11
  • 将步骤1中加载的值存储回
    x
    =>
    x
    返回到
    12
  • int x = 12;     
    int y = 15;      
    while (y >= 0)     
    {      
         x = x--;     
         y = --y;     
    }      
    System.out.print(x);