G ++忽略了-O2的比较

时间:2016-12-18 00:09:09

标签: c++ int g++ integer-overflow

这里的代码在-O上运行正常,但无法在-O2和-Os上退出。

#include <iostream>

int main() {
    int ctr = 2000000000;
    while (ctr++ > 0) {
        if (ctr % 100000000 == 0) {
             std::cout << ctr << '\n';
        }
    }
    return 0;
}

我知道它与整数溢出有关,但我认为这是定义的行为。如果它可能是相关的,我在Windows 64位计算机上的Linux虚拟机上进行编译。

编辑:整数溢出未定义行为。那么优化或优化组合会导致什么问题呢?问题是:&#34;为什么代码在-O上工作正常但在-O2和-Os上失败?&#34;

0 个答案:

没有答案