我有一个简单的问题。为什么这个循环的结果是12?我以为它会是11 ...
public static void main(String[] args) {
int i = 10;
while (i++ <= 10){
}
System.out.println(i);
}
//RESULT: 12
答案 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
进行测试,增量i
到12
,表达式现在为假,停止循环。
这种后增量行为有点令人困惑,因此只应在它正是您需要的时候使用。一般来说,假装++
不返回任何内容会好得多,这通常会使代码的意图更加明确:
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