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 循环中运行条件两次,第一次何时i = 10,将其增加到 11。然后它将i <= 10再次检查是否为假,但它仍然会增加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
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 回答
1

i++说“给我 的当前值i然后增加它”。在这种情况下,当i = 10它递增到11then 时,表达式对于前一个 value 为 true 10,因此循环重复,对 进行测试i = 11,递增i12,表达式现在为 false,停止循环。

这种后增量行为有点令人困惑,因此只能在您需要时使用。一般来说,最好假装++什么都不返回,这通常会使代码的意图更加清晰:

while(i <= 10) {
    i++;
}
于 2013-03-23T19:07:10.340 回答