C中的Integer变量占用2个字节还是4个字节?它依赖的因素是什么?
大多数教科书都说整数变量占用2个字节。但是,当我运行一个程序,打印一个整数数组的连续地址时,它显示了4的差值。
发布于 2012-07-12 02:15:00
没有明确的答案。这取决于平台。它是由实现定义的。它可以是2、4或其他值。
int
背后的想法是,它应该与给定平台上的自然“字”大小相匹配: 16位平台上为16位,32位平台上为32位,64位平台上为64位。但是,出于向后兼容的目的,一些编译器更喜欢坚持使用32位int
,即使是在64位平台上也是如此。
不过,2字节int
的时代已经一去不复返了(16位平台?)除非您使用的是具有16位字长的嵌入式平台。你的课本可能已经很旧了。
发布于 2014-03-14 20:14:14
这个问题的答案取决于您使用的平台。
但与平台无关,您可以可靠地假设以下类型:
[8-bit] signed char: -127 to 127
[8-bit] unsigned char: 0 to 255
[16-bit]signed short: -32767 to 32767
[16-bit]unsigned short: 0 to 65535
[32-bit]signed long: -2147483647 to 2147483647
[32-bit]unsigned long: 0 to 4294967295
[64-bit]signed long long: -9223372036854775807 to 9223372036854775807
[64-bit]unsigned long long: 0 to 18446744073709551615
发布于 2012-07-12 02:15:02
这取决于实现,但通常取决于x86和其他流行的体系结构,如ARM int
需要4个字节。您总是可以在编译时使用sizeof(int)
或您想要检查的任何其他类型进行检查。
如果要确保使用特定大小的类型,请使用<stdint.h>
中的类型
https://stackoverflow.com/questions/11438794
复制相似问题