我知道各种数据类型的大小可能会根据我所在的系统而变化。
我使用 XP 32 位,并使用 C++ 中的 sizeof()
运算符,似乎 long double
是 12 个字节,而 double
是 8。
然而,大多数主要资料表明 long double
是 8 个字节,因此范围与 double
相同。
我怎么有 12 个字节?如果 long double
确实是 12 个字节,这不是也扩展了值的范围吗?或者长签名仅在值超出 double 范围时使用(编译器数字),因此超出 8 个字节?
最佳答案
引自 Wikipedia :
On the x86 architecture, most compilers implement long double as the 80-bit extended precision type supported by that hardware (sometimes stored as 12 or 16 bytes to maintain data structure .
和
Compilers may also use long double for a 128-bit quadruple precision format, which is currently implemented in software.
换句话说,是的,long double
可能能够存储比 double
更大范围的值。但这完全取决于编译器。
关于c++ - 长双 vs 双,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454576/