编译器会根据CPU型号来决定数据类型的长度,下表列出了C99标准中16位32位64位平台char、int、long、long long、float、double、指针等数据结构的长度(长度单位为字节)差异:
C类型 |
16位机器 |
32位机器 |
64位机器 |
char |
1 |
1 |
1 |
short |
2 |
2 |
2 |
int |
2 |
4 |
4 |
long |
4 |
4 |
8 |
long long |
N/A |
8 |
8 |
char*、int*等指针型 |
2 |
4 |
8 |
float |
4 |
4 |
4 |
double |
8 |
8 |
8 |
表格中红色字体表示差异的部分,只需记住int、long和指针类型的区别就可以了。
【附加说明】:
【1】典型的16位和32位机器为我们用的嵌入式设备,64位机器为我们用的PC机。
【2】C99标准在C90标准的基础上增加了long long, long double, _Complex,float _Complex类型,分别占8 12 16 8个字节