为什么数据类型在不同的体系结构上有不同的大小? (即16位,32位,64位的C int)

时间:2017-04-17 03:39:26

标签: c types cpu-architecture

我读here它取决于具体的编译器,因此你总是必须使用sizeof()来找出大小,但是在阅读有关数据类型的大小时,我总是会阅读诸如"之类的内容。典型的64位机器数据类型_x是x_bytes long" "在16位机器上......"

为什么会这样? 数据类型大小与机器架构之间的相关性是什么?

编辑:我发布这个问题的原因尽管有类似的重复是因为我不满足于答案"它取决于编译器,而编译器通常是为了实现在系统上的最佳表现"。我想知道为什么给定位系统上的数据类型的某个大小被认为是最佳性能。我猜这与cpu如何处理指令有关,但我不想去读一堆关于CPU等等,只想知道与这个问题相关的部分。

1 个答案:

答案 0 :(得分:1)

  

“数据类型大小与机器架构之间的相关性是什么?”

没有明确的相关性。 趋势more like guidelines than actual rules int对应于处理器的整数宽度且至少为16位。最小“size_t ... 65535”的限制C11§7.20.31

  

为什么会这样?

这是C的强度。size_t遵循处理器“最佳/原生”大小,以获得良好的性能,可执行代码的紧密性和平台内存容量。然而,指南也有例外。

这也是C的一个弱点,因为它因平台而异。

如果代码目标需要,请使用int32_t等固定宽度类型。