【问题标题】:Program stuck in Infinite loop [closed]程序陷入无限循环[关闭]
【发布时间】:2021-12-31 06:16:23
【问题描述】:

我的程序进入无限循环,没有打印所需的输出,请帮助任何人

【问题讨论】:

  • 请将代码和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。除了代码格式的文本之外,只有在图像添加了一些重要的东西,而不仅仅是文本代码/错误/数据传达的内容时,才应该使用图像。
  • 小提示:while(space)
  • 这就是为什么他们发明了一种名为调试的技能,复制/粘贴文本有什么问题

标签: c++ visual-studio-code design-patterns while-loop infinite


【解决方案1】:

在外部while 循环的第二次和后续迭代中,space 将被初始化为一个非零值,然后while(space) 循环将在很长一段时间内保持递增space 直到它溢出到负值,然后继续循环很长时间,直到space 最终增加到 0,最终打破循环。当 int 被评估为布尔值时,只有 0 被评估为 false,所有其他值被评估为 true。而一个 32 位的 int 可以保存 4294967296 个唯一值 (-2147483648..2147483647),从而错觉你的循环是无限的。

【讨论】:

    【解决方案2】:
    while(space)
    {
        std::cout << ' ';
        space = space + 1;
    }
    

    space1 时,这个循环会增加i,所以它会一直循环。它将循环直到space 溢出,并递增直到space0

    你可能想要:

    while(space)
    {
        std::cout << ' ';
        --space;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-05-19
      • 1970-01-01
      • 2021-07-29
      • 2015-12-08
      • 1970-01-01
      • 2020-05-13
      相关资源
      最近更新 更多