JAVA,循环的奇怪结果

时间:2013-03-23 18:59:32

标签: java

我有一个简单的问题。为什么这个循环的结果是12?我以为它会是11 ...

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

    while (i++ <= 10){
    }

    System.out.println(i);
}


//RESULT: 12

4 个答案:

答案 0 :(得分:7)

它会在while循环中运行两次条件,第一次i = 10,然后它会将它增加到11.然后它会再次检查i <= 10是否为false,但是它仍会增加i,导致它变为12。

答案 1 :(得分:2)

这是因为它必须在退出循环之前再进行一次检查。

i is 10
check i++<=10?
i is 11
check i++<10?
exit
i is 12

答案 2 :(得分:1)

i++说“给我当前值i然后增加它”。在这种情况下,当i = 10增加到11时,表达式对于前一个值10为真,所以循环重复,对i = 11进行测试,增量i12,表达式现在为假,停止循环。

这种后增量行为有点令人困惑,因此只应在它正是您需要的时候使用。一般来说,假装++不返回任何内容会好得多,这通常会使代码的意图更加明确:

while(i <= 10) {
    i++;
}

答案 3 :(得分: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