我有一个简单的问题。为什么这个循环的结果是 12?我还以为11...
public static void main(String[] args) {
int i = 10;
while (i++ <= 10){
}
System.out.println(i);
}
//RESULT: 12
我有一个简单的问题。为什么这个循环的结果是 12?我还以为11...
public static void main(String[] args) {
int i = 10;
while (i++ <= 10){
}
System.out.println(i);
}
//RESULT: 12
它将在 while 循环中运行条件两次,第一次何时i = 10,
将其增加到 11。然后它将i <= 10
再次检查是否为假,但它仍然会增加i
导致它变为 12。
发生这种情况是因为它必须在退出循环之前进行另一次检查。
i is 10
check i++<=10?
i is 11
check i++<10?
exit
i is 12
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
i++
说“给我 的当前值i
,然后增加它”。在这种情况下,当i = 10
它递增到11
then 时,表达式对于前一个 value 为 true 10
,因此循环重复,对 进行测试i = 11
,递增i
到12
,表达式现在为 false,停止循环。
这种后增量行为有点令人困惑,因此只能在您需要时使用。一般来说,最好假装++
什么都不返回,这通常会使代码的意图更加清晰:
while(i <= 10) {
i++;
}