为什么我的64位机器上的双倍和长倍完全相同?

cod*_*ddy 9 c++ double long-double

这个问题可能听起来像初学者,但是当我发现这个问题时,我认为我要么是初学者,要么我的作品缺少一些东西:

int main()
{
    cout << sizeof(double) << endl;
    cout << sizeof(long double) << endl;

    cout << DBL_DIG << endl;
    cout << LDBL_DIG << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

计划产出:

8

8

15

15

我认为long double是10个字节,有18个十进制数字,而double8个字节,有15个数字,但似乎我错了.

为什么会这样?

在64位机器上使用MSVC 2010.

Yuu*_*shi 6

在MSVC++中,long doubledouble您发现的同义词.显然,这是为了利用仅限于64位操作的SSE/SSE2/SSE3指令集.

有关更多信息,另请参见此处.

  • 好吧,它不是同义词,它映射到相同的硬件,但它仍然是一个不同的类型,你可以重载函数. (2认同)