C“int”的大小是2个字节还是4个字节?
C中的整数变量占用2个字节还是4个字节? 它依赖于什么因素?
大多数教科书都说整数变量占用2个字节。 但是当我运行一个打印整数数组的连续地址的程序时,它显示了4的差异。
我知道它等于sizeof(int)
。 int
的大小实际上是依赖于编译器的。 当天,当处理器是16位时, int
是2个字节。 如今,它在32位和64位系统上最常见的是4个字节。
尽管如此,使用sizeof(int)
是获取执行程序的特定系统的整数大小的最佳方法。
编辑:修复了大多数64位系统上int
为8字节的错误语句。 例如,它在64位GCC上是4个字节。
这是C语言中最容易引起混淆的一点,但C标准只规定了保证支持的整数类型的最小范围。 int
保证能够保存-32767到32767,这需要16位。 在这种情况下, int
是2个字节。 然而,实现可以超越这个最低限度,因为你会发现很多现代编译器都使用32位int
(这也意味着4个字节非常普遍)。
你的书中说2字节的原因很可能是因为它很旧。 曾经,这是常态。 一般来说,如果你需要找出它在你使用的平台上有多少字节,你应该总是使用sizeof
运算符。
为了解决这个问题,C99添加了新的类型,您可以明确要求某个大小的整数,例如int16_t
或int32_t
。 在此之前,没有通用的方法来获得一个特定宽度的整数(尽管大多数平台在每个平台上都提供了类似的类型)。
没有具体的答案。 这取决于平台。 它是实现定义的。 它可以是2,4或其他。
int
背后的想法是,它应该与给定平台上的自然“字”大小相匹配:16位平台上的16位,32位平台上的32位,64位平台上的64位,您会明白这一点。 但是,出于向后兼容的目的,一些编译器甚至希望在64位平台上坚持使用32位int
。
除非你使用一些16位字长的嵌入式平台,否则2字节int
的时间已经过去了(16位平台?)。 你的课本可能很旧。
上一篇: Is the size of C "int" 2 bytes or 4 bytes?
下一篇: Which data type to use inorder to store value in optimum way