簡體   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