当前位置: 首页 > 知识库问答 >
问题:

为什么这个无限的for循环会在一段时间后终止?[副本]

翟功
2023-03-14
for(int i = 10; i > 0; i++) { }

但是如果我在这个for循环中打印了一些内容,那么它就不会终止。为什么会这样?

共有1个答案

万俟宜修
2023-03-14

int达到2,147,483,647时,它将环绕到-2,147,483,648。

这会导致条件i>0计算为false

这是Java中定义良好的行为:但在C或C++中不能这样做。

 类似资料:
  • 当我开始我的代码 我得到无限循环。为什么?

  • 我在尝试一个测试,我写了这个程序。。。 六羟甲基三聚氰胺六甲醚。。。在下面的代码中,我知道我用了“I”而不是“j”,所以为了解决这个问题,我用了这个 我在节目中遇到的问题是- 在上面的代码中,当我删除这个if块时- 这个节目无限期地进行。。。。。。。。。但当我再次放置这个if块时,程序在执行一段时间后自动终止。我也在这个链接上读到了这一点,但它展示了java的例子 它们显示了负值的原因,但在我的程

  • 我有一个看起来很简单的问题,但由于某种原因我无法绕过它。基本上我的程序正在导致一个无限循环,我不知道为什么。 下面是我陷入的特定循环: 当我运行它时,它总是问我输入列#。我给它一个数字,它接受这个数字,$response变为True,但while循环继续运行,就好像<code>的$response</code>为false一样。我是Perl新手,所以可能我遗漏了一些东西,但是($response=

  • 问题内容: 我正在浏览旧的考试问题(当前是大学一年级),我想知道是否有人可以更彻底地解释为什么以下循环在预期的情况下不会结束。为什么会这样?我了解由于舍入错误或其他原因,它会跳过100.0,但是为什么呢? 问题答案: 数字0.1不能精确地用二进制表示,就像1/3不能精确地用十进制表示一样,因此您不能保证: 这是因为在二进制文件中: 但是,双精度数不能包含无限精度,因此,正如我们将1/3近似为0.3

  • 该程序应该使用int 0x10在ASCII中打印一个具有给定字符的金字塔,3行的预期结果(下面代码中使用的数量)将是: A. a a a a a 要编译和运行代码,我使用nasm编译它,然后使用qemu进行仿真: 然而,程序get无法打印所有ASCII值。此外,如果有任何针对nasm代码的调试器,可以让您逐行运行,允许您检查寄存器值,这对学习也很有帮助。

  • 我写了这个简单的代码来获取一个double,并一直询问直到得到一个为止,但是当你给一个string时,它就变成了一个无限循环,我不知道为什么。为什么它会这样?