繁体   English   中英

在循环中递增变量,意外结果

[英]Increment variable in loop, unexpected result

代码片段:

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 的值为零,for 循环外 i 的值是 1。能帮我理解一下吗?

i=--ii--; i的值更改为-1 ,然后再更改回0 ,因为它分配给它-1-(-1) ,即0 这个结果的原因是前递减运算符 - --i - 返回递减的值-1而后递减运算符 - i-- - 返回递减之前的值(因此它返回-1而不是-2 ) .

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

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

int i=0;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM