gpt4 book ai didi

c - 为什么数据类型在不同的架构上有不同的大小? (即 16 位、32 位、64 位的 C int)

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:18 24 4
gpt4 key购买 nike

我读了here它取决于特定的编译器,所以你总是必须使用 sizeof() 来找出大小,但是在阅读数据类型大小时我总是读到诸如“在典型的 64 位机器上 datatype_x 是 x_bytes 长”之类的东西“在16 位机……”

为什么会这样?数据类型大小和机器架构之间有什么关系?

编辑: 尽管有类似的重复问题,但我还是发布了这个问题,因为我不满足于“这取决于编译器,编译器通常是为了实现最佳性能”的答案在系统上”。我想知道为什么给定位系统上数据类型的特定大小被认为可以提供最佳性能。我想这与 cpu 如何处理指令有关,但我不想去阅读有关 CPU 等的大量信息,只想知道与这个问题相关的部分。

最佳答案

"What's the correlation between datatype size and the machine architecture?"

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

Why is it like this?

这就是 C 的优势。size_t 遵循处理器的“最佳/ native ”大小,以实现良好的性能、可执行代码的紧凑性和平台内存容量。然而,指南也有异常(exception)。

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

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

关于c - 为什么数据类型在不同的架构上有不同的大小? (即 16 位、32 位、64 位的 C int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43444789/

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