关于Java的文章。没有生效? [重复]

问题描述 投票:0回答:2
int x = 12;     
int y = 15;      
while (y >= 0)     
{      
     x = x--;     
     y = --y;     
}      
System.out.print(x);     

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

java int post-increment pre-increment
2个回答
1
投票

--中的[x--]确实生效。但是,您看不到它,因为您将递减前的值x直接分配回了x

这是x = x--发生的事情:

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

这将使x的整体效果保持不变。

y = --y的效果不同,因为表达式--y的值与减后的y的值相同,因此总体效果与--y相同。


1
投票

简单地说,x = x--;执行以下操作:

  1. 将变量x加载到操作数堆栈(值为12)。
  2. 减量x,其值现在为11
  3. 将在步骤1中加载的值存储回x ==> x返回至12
© www.soinside.com 2019 - 2024. All rights reserved.