C语言中的整数变量占用2字节还是4字节?它取决于哪些因素?

大多数教科书都说整型变量占用2个字节。 但是当我运行一个程序打印一个整数数组的连续地址时,它显示了4的差值。


当前回答

这主要取决于你使用的平台,取决于不同的编译器。现在在大多数编译器中,int是4字节。 如果你想检查你的编译器正在使用什么,你可以使用sizeof(int)。

main()
{
    printf("%d",sizeof(int));
    printf("%d",sizeof(short));
    printf("%d",sizeof(long));
}

c编译器唯一承诺的是short的大小必须等于或小于int, long的大小必须等于或大于int。因此,如果int的size是4,那么short的size可能是2或4,但不会大于它。long和int也是如此。上面还说长短不能一样。

其他回答

唯一的保证是char类型必须至少是8位宽,short和int类型必须至少是16位宽,long类型必须至少是32位宽,并且sizeof (char) <= sizeof (short) <= sizeof (int) <= sizeof (long)(对于这些类型的unsigned版本也是如此)。

根据平台的不同,Int的宽度可以从16位到64位不等。

我知道它等于sizeof(int)int的大小实际上取决于编译器。在处理器是16位的时候,一个int是2字节。现在,在32位和64位系统上,它通常是4个字节。

不过,使用sizeof(int)是获得执行程序的特定系统的整数大小的最佳方法。

编辑:修正了在大多数64位系统上int为8字节的错误语句。例如,它在64位GCC上是4字节。

没有具体的答案。这取决于平台。它是由实现定义的。它可以是2 4或者别的什么。

int背后的思想是,它应该与给定平台上的自然“字”大小相匹配:16位平台上的16位,32位平台上的32位,64位平台上的64位,你明白了吧。然而,出于向后兼容性的考虑,一些编译器更倾向于在64位平台上使用32位整型。

2字节int的时代已经一去不复返了(16位平台?),除非你正在使用一些16位字长的嵌入式平台。你的课本可能很旧了。

这取决于实现,但通常在x86和其他流行的架构,如ARM int占用4个字节。你总是可以在编译时使用sizeof(int)或任何你想检查的其他类型进行检查。

如果要确保使用特定大小的类型,请使用<stdint.h>中的类型

这个问题的答案取决于您使用的平台。 但无论平台如何,你都可以可靠地假设以下类型:

 [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