这是一个简单的 C++ 代码,我在 Windows 8.1 64 位Intel 内核 i-7 机器上使用TDM-GCC 5.1 32 位(gcc-5.1.0-tdm-1-core) 进行编译。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b;
a = 0.002;
b = 0.004;
cout << std::sqrt(a*a+b*b)<< endl;
return 0;
}
但是在运行时,它会给出以下输出
nan
但是,它可以在32 位机器上与 TDM-GCC 32 位编译器一起正常工作。
此外,当我将数据类型更改为float时,它在 32 位和 64 位计算机上都可以正常工作。
这里有什么问题?