gpt4 book ai didi

c - 不同机器上C数据类型的大小和sizeof(complex long double)

转载 作者:行者123 更新时间:2023-12-02 08:59:34 24 4
gpt4 key购买 nike

有人知道在不同机器上比较 C 数据类型大小的网站或论文吗?我对一些“大型”机器的值(value)感兴趣,例如 System z 等。

并且:任何机器上最大的 native 数据类型是否有字节上限,并且它总是complex long double类型吗?

编辑:我不确定,但是 SIMD 寄存器数据是否也利用了 CPU 的缓存?将存储在特殊单元中且不使用 L1/L2/L 缓存的数据类型不符合我的兴趣。仅检查类型 {char、short、int、long、long long、float、double、long double、_Bool、void *}(以及 _Complex)。

最佳答案

C 数据类型大小不依赖于机器平台。这取决于编译器的实现。同一硬件平台上的两个不同编译器可能会以不同的方式实现基本类型,从而导致大小完全不同。

您还应该考虑到这样一个事实,即 size_t 这样的标准类型不能保证由用户可访问的类型(例如 unsigned int)表示。 size_t 可以通过未知大小和范围的特定于实现的无符号类型来实现,这是非常合法的。

此外,理论上(并且迂腐地)C 语言在大小方面没有“最大”类型。 C 语言规范绝对不保证基本类型的相对大小。 C 语言仅保证每种类型可表示值的相对范围。例如,语言保证int的范围不小于short的范围。但是,由于[几乎]任何类型都可以包含任意数量的填充位,因此理论上 short 类型的对象大小可能大于 int 类型的对象大小。当然,这将是一种非常奇特的情况。

但实际上,您可以预期 long long int 是最大的整型类型,long double 是最大的浮点类型。如果您愿意,您还可以将复杂类型纳入考虑范围。

关于c - 不同机器上C数据类型的大小和sizeof(complex long double),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com