c++ - 为什么在我的 64 位机器上 double 和 long double 完全一样?

标签 c++ double long-double

这个问题听起来像是针对初学者的,但是当我发现这个问题时,我想我要么是初学者,要么我的 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 doubledouble 的同义词。显然这是为了利用仅限于 64 位操作的 SSE/SSE2/SSE3 指令集。

另见 here获取更多信息。

关于c++ - 为什么在我的 64 位机器上 double 和 long double 完全一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922216/

相关文章:

c++ - 构造函数中的网络连接设置 : good or bad?

c++ - 如何在 C++ 堆上创建二维数组?

c++ - 如何将内容追加到 stringstream 类型对象?

c++ - c++中从double到string的转换

java - 从可能为空的 Double 创建的 BigDecimal 的总和

C++ Builder 2009 Float 与 Long Double

c - long double 的负输出

c++ - for循环C++中没有检查条件

java - 将 textView 中的 double 值保存到变量

c++ - 解析长和双