fpi*_*o07 1 c++ for-loop infinite-loop
int i = 0;
double n = 1.24;
for (; int(n) != n; i++) {
n *= 10;
}
Run Code Online (Sandbox Code Playgroud)
它为什么进入无限循环?两次循环后它不应该停止吗?
1.24不能完全表示为a double.如果你检查它的初始值n,你会发现它是1.239999999999999991118215802998747...
至于循环永不停止的原因,一旦n超过最大值double,它就会自动转换为+Infinity特殊的浮点值.一旦达到这一点,n停止改变,int(n) != n永远不会满足.