最近经常会遇到C语言中各类型变量所占字节数的问题,索性在这里做一个整理总结。
其实C标准并没有具体给出规定哪个基本类型应该是多少个字节数,而且这个也与OS、编译器有关,比如同样是在32位操作系统,VC++的编译器下int类型为4个字节,而在tuborC下则是2个字节。
下面给出一个表格,方便查看个类型的字节数:
| 类型 | 16位 | 32 位 | 64位 |
|---|---|---|---|
| char | 1 | 1 | 1 |
| short int | 2 | 2 | 2 |
| int | 2 | 4 | 4 |
| unsigned int | 2 | 4 | 4 |
| float | 4 | 4 | 4 |
| double | 8 | 8 | 8 |
| long | 4 | 4 | 8 |
| long long | 8 | 8 | 8 |
| unsigned long | 4 | 4 | 8 |
首先来看字符类型,这里单指char , char变量在内存中存储的是字符对应的ASCII码值。所以长度也是固定的,不管在哪种编译器下,均为1个字节。
再来看 浮点类型,C中的浮点类型有俩种,float和double,与整数不同的是,浮点数的长度适中的固定的,float占用4个字节,double占用8个字节。
最后来看 整型类型,查阅资料后发现虽然16位、32位或者64位的机子各种类型并不一样,但有几条规则(ANSI/ ISO制定):
- short 至少占用2个字节
- int 建议为一个机器字长,32位环境下为4字节,64位环境下为8字节
- short 的长度不能大于int, long 的长度不能小于int
本文详细介绍了C语言中不同类型变量所占字节数的情况,包括字符类型、浮点类型及整型类型,并提供了不同位数操作系统下各类型变量所占字节数的表格。
1810





