使用 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
.
的原因
- 你设置
i
到10
会输出10
- 你的循环
while i
小于或等于 10
- 你在
i++
之后递增这意味着首先检查条件 i <= 10
然后递增完成输出 11
- 然后进入循环,因为
i
在开始循环时是 10
,现在是 11
,然后 get 递增到 12
,将打印 12
- 案件又开始循环了。
i = 12
比 10
多,循环结束但是你的 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 值。
希望对您有所帮助。
我无法弄清楚以下代码片段如何打印 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
.
- 你设置
i
到10
会输出10
- 你的循环
while i
小于或等于10
- 你在
i++
之后递增这意味着首先检查条件i <= 10
然后递增完成输出11
- 然后进入循环,因为
i
在开始循环时是10
,现在是11
,然后 get 递增到12
,将打印12
- 案件又开始循环了。
i = 12
比10
多,循环结束但是你的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 值。
希望对您有所帮助。