【发布时间】:2011-09-09 21:08:22
【问题描述】:
这有点好奇。
我正在学习 C++。我被要求重现一个无限循环,例如打印一系列幂的循环:
#include <iostream>
int main()
{
int powerOfTwo = 1;
while (true)
{
powerOfTwo *= 2;
cout << powerOfTwo << endl;
}
}
结果让我很困扰。例如,使用 Python 解释器,我曾经获得一个有效的无限循环,每次迭代时都会打印 2 的幂(当然,直到 IDE 因超出迭代限制而停止)。使用这个 C++ 程序,我得到一系列 0。但是,如果我将其更改为有限循环,也就是说,我只将条件语句更改为:
(powerOfTwo <= 100)
代码运行良好,打印 2、4、16、...、128。
所以我的问题是:为什么 C++ 中的无限循环会以这种方式工作?为什么它似乎根本不评估 while 主体?
编辑:我正在使用 Code::Blocks 并使用 g++ 进行编译。
【问题讨论】:
-
我会检查设置了哪些优化标志。
-
您是在此处发布 实际 代码(例如通过复制和粘贴),还是重新输入?
-
为我工作。 ideone.com/tJYZA
-
我这里重新打了一遍,和原来没有区别。
标签: c++ infinite-loop