这个问题听起来像是针对初学者的,但是当我发现这个问题时,我想我要么是初学者,要么我的 comp 缺少一些东西:
int main()
{
cout << sizeof(double) << endl;
cout << sizeof(long double) << endl;
cout << DBL_DIG << endl;
cout << LDBL_DIG << endl;
return 0;
}
程序输出:
8
8
15
15
我以为 long double
是 10 个字节,有 18 个十进制数字,而 double
是 8 个字节,有 15 个数字,但看来我错了。
为什么会这样?
在 64 位机器上使用 MSVC 2010。
最佳答案
如您所知,在 MSVC++ 中,long double
是 double
的同义词。显然这是为了利用仅限于 64 位操作的 SSE/SSE2/SSE3 指令集。
另见 here获取更多信息。
关于c++ - 为什么在我的 64 位机器上 double 和 long double 完全一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922216/