c++ - 无限循环

标签 c++ for-loop infinite-loop

int i = 0;
double n = 1.24;
    for (; int(n) != n; i++) {
        n *= 10;
    }

为什么会进入死循环?不是应该在循环两次后停止吗?

最佳答案

1.24 不能完全表示为 double。如果您检查 n 的初始值,您会发现它是 1.239999999999999991118215802998747...

至于为什么循环不停,一旦n超过最大double的值,就自动转为+Infinity,这是一个特殊的浮点值。一旦达到该点,n 将停止更改并且 int(n) != n 永远无法满足。

关于c++ - 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13914601/

相关文章:

c++ - 在 CLion 项目中链接 boost

c++ - 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

c++ - 判断文件是否是 FTP 服务器上的目录

c - 循环或多线程哪一个执行时间较长?

java - C++ IO 与 Java IO

javascript - 函数只返回第一个值

java - 为什么我不能通过 "for"循环保存 EnumMap 条目,即使我使用 "final"?最佳解决方法?

java - 如何使这段代码不返回无限循环?

c - 在无限循环中显示相同的字符

c - 为什么我的 if 语句会创建一个无限循环?