tur*_*1ng 2 c comparison types sizeof
有人知道在不同机器上比较C数据类型大小的网站或论文吗?我对像System z之类的一些"大型"机器的价值感兴趣.
并且:是否存在任何计算机上最大的本机数据类型可以具有的字节上限,并且它总是类型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
是最大的浮点类型.如果您愿意,还可以将复杂类型包括在内.
归档时间: |
|
查看次数: |
3820 次 |
最近记录: |