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_tint32_t 。 在此之前,没有通用的方法来获得一个特定宽度的整数(尽管大多数平台在每个平台上都提供了类似的类型)。


没有具体的答案。 这取决于平台。 它是实现定义的。 它可以是2,4或其他。

int背后的想法是,它应该与给定平台上的自然“字”大小相匹配:16位平台上的16位,32位平台上的32位,64位平台上的64位,您会明白这一点。 但是,出于向后兼容的目的,一些编译器甚至希望在64位平台上坚持使用32位int

除非你使用一些16位字长的嵌入式平台,否则2字节int的时间已经过去了(16位平台?)。 你的课本可能很旧。

链接地址: http://www.djcxy.com/p/40409.html

上一篇: Is the size of C "int" 2 bytes or 4 bytes?

下一篇: Which data type to use inorder to store value in optimum way