while循环中的post增量操作(java)

Nee*_*uni 4 java loops while-loop

最近我遇到了这个问题

int i = 10;
while (i++ <= 10) {
    i++;
}
System.out.print(i);
Run Code Online (Sandbox Code Playgroud)

答案是13,有些人可以解释一下它是13吗?

Joh*_*136 8

  • 我= 10.看看我,比较10
  • i = 10. 10 <= 10,所以进入循环.
  • i = 10.增加i(根据while表达式)
  • i = 11.在循环中,递增i
  • 我= 12.看看我,比较10
  • i = 12.12不<= 10,所以不要进入循环.
  • i = 12.增加i(根据while表达式)
  • 我= 13


qui*_*ack 1

这是我可以解决这个问题的替代方法之一。让f(ref i)是一个函数,它通过引用接收 i 并将其值增加 1。所以f(ref i) = i + 1

现在我们已经有了f(ref i),上面的代码可以写成

int i = 10
while( (f(ref i) -1) <=10 )
{
   f(ref i);
}
Run Code Online (Sandbox Code Playgroud)

我会f(ref i)在返回时用等效的 i 值替换并得到类似的答案

while(11 - 1 <= 10) {12}
while (13 -1 <= 10) -> break;
Run Code Online (Sandbox Code Playgroud)

所以我=13。