我在运行这个无限 for
循环。为什么这个 for
循环会在一段时间后终止?
for(int i = 10; i > 0; i++) { }
但是如果我在这个 for
循环中打印一些内容,那么它就不会停止。为什么会这样?
当 int
变量达到 2,147,483,647 时会发生环绕,变成 -2,147,483,648。
这会导致条件语句 i > 0
结果为false
。
在Java中,这是完全定义良好的行为:但在C或C++中不能这样做。
如果您尝试在循环中打印输出内容,则循环速度会大大降低,您可能需要耐心等待。将当前值的 i
合并到输出中,自己看看吧:即使每秒输出 1,000 次,也需要近一个月才能达到环绕点!