C语言中的整数变量占用2字节还是4字节?它取决于哪些因素?
大多数教科书都说整型变量占用2个字节。 但是当我运行一个程序打印一个整数数组的连续地址时,它显示了4的差值。
C语言中的整数变量占用2字节还是4字节?它取决于哪些因素?
大多数教科书都说整型变量占用2个字节。 但是当我运行一个程序打印一个整数数组的连续地址时,它显示了4的差值。
当前回答
唯一的保证是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位字长的嵌入式平台。你的课本可能很旧了。
唯一的保证是char类型必须至少是8位宽,short和int类型必须至少是16位宽,long类型必须至少是32位宽,并且sizeof (char) <= sizeof (short) <= sizeof (int) <= sizeof (long)(对于这些类型的unsigned版本也是如此)。
根据平台的不同,Int的宽度可以从16位到64位不等。
C“int”的大小是2字节还是4字节?
答案是“是”/“不是”/“也许”/“也许不是”。
C编程语言指定了以下内容:最小的可寻址单位,即char,也称为“字节”,宽度恰好为CHAR_BIT位,其中CHAR_BIT至少为8。
因此,C语言中的一个字节不一定是八位,即8位。在过去,第一个运行C代码的平台(和Unix)有4字节的int -但总的int有36位,因为CHAR_BIT是9!
Int应该是平台的自然整数大小,范围至少为-32767…32767. 你可以用sizeof(int)在平台字节中获取int的大小;当你将这个值乘以CHAR_BIT时,你就会知道它有多宽。
虽然36位机器大多已经死亡,但仍有非8位字节的平台。就在昨天,有一个关于德州仪器16位字节MCU的问题,它有一个C99, c11兼容的编译器。
在TMS320C28x上,char, short和int似乎都是16位宽,因此是一个字节。Long int是2字节,Long Long int是4字节。C语言的美妙之处在于,人们仍然可以为这样的平台编写高效的程序,甚至可以以可移植的方式进行!
这取决于实现,但通常在x86和其他流行的架构,如ARM int占用4个字节。你总是可以在编译时使用sizeof(int)或任何你想检查的其他类型进行检查。
如果要确保使用特定大小的类型,请使用<stdint.h>中的类型