为什么在32位和64位系统中存在不同大小的C数据类型...
例如:32位的int大小是4位,64位是8字节
它背后的原因是将64位数据类型的大小加倍,以及我知道如果我们要在64位系统中使用与32位相同的大小,那么就没有性能问题。 ..
答案 0 :(得分:2)
为什么在32位和64位系统中有不同大小的C数据类型[?]
C的基本数据类型的大小取决于实现。它们不一定依赖于机器架构,反例也很多。例如,GCC的32位和64位实现对x86和x86_64使用相同大小的数据类型。
在64位[?]
中将数据类型的大小加倍的原因是什么?
实施决策的原因因实施者和实施特征而异。在某种意义上,int
通常(但并非总是)被选择为具有对于目标机器而言自然的大小。这可能意味着对它的操作很快,或者从内存或其他东西加载和存储是有效的。这些是所涉及的考虑因素。
答案 1 :(得分:0)
C语言定义并未规定大多数数据类型的特定大小;相反,指定每个类型必须能够表示的值的范围。 char
必须足够大才能表示执行字符集的单个字符(至少范围[-127,127]
),short
和int
必须大到足以表示至少范围[-32767,32767]
等
传统上,int
的大小与"自然"相同。给定体系结构的字大小,前提是a)它更容易实现,以及b)对该类型的操作将是最有效的。今天是否仍然如此,我没有资格说(不是硬件人)。