引言
编写C/C++语言程序,必须要知道基本数据类型所占字节数,才能深刻理解数组(array)、结构体(structure)、联合体(union)等所占内存的大小(对于结构体和联合体,还需要理解字节对齐的知识)。 编写在32位和64位机器上运行的程序时,更需要了解各个类型在不同机器上的差异。
对比表
数据类型 | 32位机(字节) | 64位机(字节) | 备注 |
---|---|---|---|
char |
1 |
1 |
|
short |
2 |
2 |
|
int |
4 |
4 |
|
long |
4 |
8 |
32位与64位不同 |
float |
4 |
4 |
|
char * |
4 |
8 |
其他指针类型如long *, int * 也是如此 |
long long |
8 |
8 |
|
double |
8 |
8 |
|
long double |
10/12 |
10/16 |
有效位10字节。32位为了对齐实际分配12字节;64位分配16字节 |