使用 post 增量控制 while 循环的流程

Control flow for a while loop with post increment

我无法弄清楚以下代码片段如何打印 13 作为输出。据我所知,while 条件应该保持循环,因为在这种情况下 i 总是小于 10。我尝试调试但无法弄清楚。有人可以解释一下吗?

public class WhileCondition2 
{
   public static void main(String... args)
   {
       int i = 10;
       while (i++ <= 10) 
       {
           i++;
       }
       System.out.print(i);
   }
}

第一次迭代:

  while (i++ <= 10) { // i++ returns 10, so condition is true, i becomes 11
      i++; // i becomes 12
  }

第二次迭代:

  while (i++ <= 10) // i++ returns 12, so condition is false, i becomes 13

因此i的最终值为13。

你在 while 语句中递增 i 一次,在循环本身中递增一次,你应该做一个或另一个。

i等于10后,校验后自增一次,i变为11。然后循环体中的增量发生 i = 12。最后在 i = 12 处检查条件,正如预期的那样,它被证明是错误的。但是条件部分的增量将永远不会减少。这就是它打印 13.

的原因
  1. 你设置i10会输出10
  2. 你的循环 while i 小于或等于 10
  3. 你在 i++ 之后递增这意味着首先检查条件 i <= 10 然后递增完成输出 11
  4. 然后进入循环,因为 i 在开始循环时是 10,现在是 11,然后 get 递增到 12,将打印 12
  5. 案件又开始循环了。 i = 1210 多,循环结束但是你的 i++ 在条件失败后仍然完成,i 现在是 13

您正在使用 post 增量

while (i++ <= 10) { // i will be incremented after evaluating i and do comparaison with 10
      i++; 
}

您可以使用 pre 增量代替 post 增量

while (++i <= 10) { // i will be incremented before comparaison
      i++; 
}

i 的值将是 11

是的,输出为 13 的原因如下

i 的初始值为 10。

当它进入 while 循环时,i++ <= 10 为真,因为 i == 10 并进入循环,但在进入循环之前,由于 post 递增运算符,i 递增到 11。

在循环中,使用循环中的 post 递增运算符再次将 i 递增到 12。

接下来,在 while(i++ <= 10) 中再次测试 i,结果为 false,因为 i 为 12。但在它退出循环之前,它再次由 post 递增运算符递增,使其成为13.

这是输出到 java 控制台的内容 window,

需要记住的是,即使 while 循环条件为假,它仍会增加 i 值。

希望对您有所帮助。