在ANSI标准C语言中,变量所占的存储空间并没有明确规定,它与具体的编译器和操作系统有关。但通常在大多数系统中:
- char类型:1个字节
- short类型:2个字节
- int类型:在16位编译器中是2个字节,32位和64位编译器中是4个字节
- long类型:在16位编译器中是4个字节,32位编译器中也是4个字节,64位编译器中可能是8个字节(和具体编译器实现有关)
- float类型:4个字节
- double类型:8个字节
- long double类型:10个字节 或 12个字节 或 16个字节(有的编译器可能将额外的2个字节用于扩展精度)
- 指针:在32位编译器中是4个字节,64位编译器中是8个字节。
以上涵盖的是基本的数值类型和指针类型,实际情况可能会有所不同,具体还需要看具体的系统和编译器实现。例如,有的系统可能会有自己特殊的”字节”定义,而不是我们通常意义上的”8比特为1字节”。又例如,对于结构体(struct)类型的变量,其所占的存储空间不仅仅是其各成员变量所占的存储空间之和,还要加上可能的“填充字节”(padding bytes)。
如果要在程序中查看不同类型变量所占的字节数,可以使用sizeof运算符。
在ANSI C标准中,变量所占据的存储空间不能够一概而论,因为它取决于变量的数据类型和所运行的系统平台。以下是一些常见数据类型在一般情况下(32位系统)所占的字节数:
- char:1个字节
- int:4个字节
- short int:2个字节
- long int:4个字节
- float:4个字节
- double:8个字节
- pointer(指针):4个字节
需要注意的是这只是一般情况,具体取决于编译器和平台。比如在64位系统下,一个指针可能占8个字节。有时候为了方便,也会有数据类型的别名(比如uint32_t,明确指定为32位的无符号整数)。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/160269.html