首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >long double vs double

long double vs double
EN

Stack Overflow用户
提问于 2010-08-11 08:55:37
回答 3查看 71.2K关注 0票数 75

我知道各种数据类型的大小可能会根据我所在的系统而变化。

我使用XP 32位,在C++中使用sizeof()运算符,long double似乎是12字节,而double是8字节。

然而,大多数主要来源指出,long double是8字节,因此范围与double相同。

为什么我有12个字节?如果long double确实是12个字节,这不是也扩展了取值范围吗?或者仅当值超过双精度值的范围时才使用长签名(编译器数字),因此超过8个字节?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-11 08:58:51

引用Wikipedia

在x86体系结构上,大多数编译器将long double实现为该硬件支持的80位扩展精度类型(有时存储为12或16字节以维护数据结构。

编译器还可以将long double用于128位四倍精度格式,这目前是在软件中实现的。

换句话说,是的,与double相比,long double可能能够存储更大范围的值。但这完全取决于编译器。

票数 72
EN

Stack Overflow用户

发布于 2018-02-23 13:41:08

对于x64上的现代编译器,Clang和GCC在long double上使用16字节双精度,而VC++使用8字节双精度。换句话说,对于VC++,long doubledouble的精度是一样的,但是对于Clang和Clang,你可以得到更高的精度。现代的x86 CPU确实支持这些16字节的双CPU,所以我认为Clang和GCC正在做正确的事情,允许您使用高级语言原语访问低级硬件功能。

票数 15
EN

Stack Overflow用户

发布于 2010-08-11 09:12:29

数字的标准字节大小是所有平台上保证的最小大小。在某些系统上,它们可能更大,但永远不会更小。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3454576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档