2

簡単な質問があります。このループの結果が12であるのはなぜですか?11になると思いました...

public static void main(String[] args) {
    int i = 10;

    while (i++ <= 10){
    }

    System.out.println(i);
}


//RESULT: 12
4

4 に答える 4

7

whileループ内の条件を2回実行し、最初i = 10,は11にインクリメントします。次に、i <= 10もう一度チェックし、falseになりますが、それでもインクリメントiされて12になります。

于 2013-03-23T19:03:12.833 に答える
2

これは、ループを終了する前に別のチェックを実行する必要があるために発生します。

i is 10
check i++<=10?
i is 11
check i++<10?
exit
i is 12
于 2013-03-23T19:04:16.460 に答える
1

i++「の現在の値を教えてiそれをインクリメントしてください」と言います。この場合、i = 10それが増分されると11、式は前の値に対してtrueである10ため、ループが繰り返され、のテストが実行されi = 11、が増分iされ12、式がfalseになり、ループが停止します。

このインクリメント後の動作はやや混乱を招くため、まさに必要な場合にのみ使用する必要があります。++一般に、何も返さないふりをする方がはるかに優れています。これにより、コードの意図がより明確になります。

while(i <= 10) {
    i++;
}
于 2013-03-23T19:07:10.340 に答える
1
Iteration 1 : i=10
condition true  ===>>> while loop executed once
i incremented to 11


iteration 2 : i=11
condition false ===>>> while loop exited
but after exiting the while loop
i is incremented again to ===>>> i =12

and that is what you get as output
于 2013-03-23T19:16:29.627 に答える