澄清“long double”和“double”数据类型之间的差异
尽管普遍认为“long double”通常占用 8字节,发帖者遇到了一个特殊的情况,即“long double”在其 32 位 Windows XP 系统上声明了 12 个字节。为了解开这个谜团,让我们深入探究其根本原因。
根据 Wikipedia,在 x86 架构(包括 Windows XP)上,大多数编译器选择将“long double”实现为 80 位扩展精度类型。然而,为了保持有效的数据结构对齐,在某些情况下此类型可能会存储为 12 字节(甚至 16 字节)。
此外,某些编译器超越 80 位类型并实现“long double”作为 128 位四倍精度格式。这种高级格式并未被广泛采用,并且通常以软件实现,而不是由硬件本机支持。
因此,答案在于编译器的判断力。虽然“long double”通常与 80 位扩展精度类型对齐,但出于对齐目的,编译器可以自由地将其存储容量扩展到 12 甚至 16 字节。因此,与“double”相比,扩展的存储容量可能允许在“long double”中存储更广泛的值。
以上是为什么'long double”在我的 32 位 Windows XP 系统上占用 12 个字节?的详细内容。更多信息请关注PHP中文网其他相关文章!