循环中的增量变量,意外结果

时间:2018-10-08 06:37:56

标签: java

代码段:

int i=0;

for(int i=0;i<1;i++){
    i=--i-i--;
    System.out.println("for loop i= "+i);
}
System.out.println("i value outside for loop= "+i);

输出:

for loop i= 0
i value outside for loop= 1

在for循环中,i的值是零,而在i循环中,i的值是1。

1 个答案:

答案 0 :(得分:1)

i=--i-i--;i的值更改为-1,然后又返回到0,因为它为其分配了-1-(-1),即{{1} }。产生此结果的原因是,前减运算符-0-返回减小后的值--i,而后减运算符--1-在减小前返回值(因此返回i--代替-1)。

但是,循环的-2子句将i++递增为1,这导致循环终止。因此,循环后i的值为i

请注意,您的输入中有错字。您在同一范围内两次声明1。为了使代码通过编译(并显示您声称得到的输出),应将其更改为:

i