从以前开始,我就知道++ 意味着递增地添加整数的值。如果是++var,它会先加一,然后将其分配给该值;如果是 var++,它会稍后加一。
这是我的问题:
int step=0;
if(conditon==true){
while(!end ){
step=step++;
}
}
System.out.println(step);
这一小段代码的输出将为零。但如果我用 step=++step;
替换 step=step++;
,那么它会给出正确的答案。
但是我很困惑为什么会有差异?
编辑
与引用答案的区别:有2个(甚至3个)不同的变量相互分配,而这里的step=step++将导致0。根据该问题的答案,它会有所不同。但事实并非如此。为什么?
这是该问题的答案:
int x = 0;
int y = 0;
y = ++x; // result: y=1, x=1
int x = 0;
int y = 0;
y = x++; // result: y=0, x=1
据此,step=step++
应该加起来为step
(因为这里的x和y都是相同的变量,即step),但事实并非如此。
编辑2
还有一些更令人困惑的事情。如果用 step++
替换 step=step++
,那么它将导致与 step=++step
相同的结果,这让我更加困惑。
最佳答案
step++
和 ++step
本身会增加 step 的值,但它们会计算出不同的值。 step++
计算出递增值,++step
计算出非递增值。
step = step++
递增step,然后将未递增的值赋给step。
step =++step
递增step,然后将递增的值赋给step。
因此,step = step++
是递增步骤,但随后将其设置回其原始值,使得该语句看起来没有任何效果。
关于java - 如果 var=var++,++ 操作数不起作用;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853377/