[英]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.