我试图了解以下程序的奇怪行为。很明显,在定义全局变量“bug”的时候出现了溢出,但是程序在无辜计算1.0+2.0的时候抛出了浮点异常。
#include <iostream>
#include <cmath>
#include <fenv.h>
using namespace std;
const double bug = pow(10.0,pow(10.0,10.0));
int main(void)
{
feenableexcept(-1);
cout << "before" << endl;
cout << 1.0 + 2.0 << endl;
cout << "after" << endl;
return 0;
}
我尝试用 g++ 和 clang++ 编译它,但两者的输出相同
before
Floating point exception