这里的代码在-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;