我们在编写 C/C++ 代码时肯定希望在32位和64位系统都能正常运行,那么我们就需要注意基本数据类型的长度在32位与64位中的变化;另外这种变化还与编译器相关。
64位 GCC 是 LP64:即 long 和 pointer 是64位,具体的:
gcc 编译器 |
32 位 |
64 位 |
char |
1 |
1 |
short |
2 |
2 |
int |
4 |
4 |
long |
4 |
8 |
long long |
8 |
8 |
long double |
12 |
16 |
double |
8 |
8 |
float |
4 |
4 |
void*( 指针 ) |
4 |
8 |
size_t |
4 |
8 |
另外数据长度的变化还影响到字节对齐,也就是影响结构体的补位操作:gcc-32 是4字节对齐;gcc-64 是8字节对齐。
PS: 64位 VC 是 LLP64:即 long long 和 pointer 是64位。