最佳答案
编译如下:
#include <iostream>
int main()
{
for (int i = 0; i < 4; ++i)
std::cout << i*1000000000 << std::endl;
}
gcc
发出以下警告:
warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations]
std::cout << i*1000000000 << std::endl;
^
我知道有一个有符号整数溢出。
我不能得到的是,为什么 i
值被破坏的溢出操作?
我已经阅读了 为什么使用 GCC 的 x86上的整数溢出会导致无限循环?的答案,但我仍然不清楚在 为什么这种情况发生-我得到的“未定义”意味着“任何事情都可能发生”,但是什么是 这种特殊的行为的根本原因?
编译器: gcc (4.8)