C/C++ - 关于不同数据类型在16/32/64位编译器平台上所占内存大小分析
在别人博客看到这样一句话,觉得总结得蛮到位的:程序运行平台 = CPU+OS+Compiler
在C语言和C++中,经常会出现某一种数据类型所占的字节数为多大的问题,其实这些机器字长和和机器位数没有直接关系,但是和编译器有关系,由编译器在编译期间决定。
16位编译器 | 32位编译器 | 64位编译器 | |
---|---|---|---|
char | 1 | 1 | 1 |
char*(即指针变量) | 2 | 32位的寻址空间是2^32=32个bit=4个字节 | 8 |
指针 | 2 | 4 | 8 |
short(short int) | 2 | 2 | 2 |
int | 2 | 4 | 4 |
unsigned int | 2 | 4 | 4 |
float | 4 | 4 | 4 |
double | 8 | 8 | 8 |
long(long int) | 4 | 4 | 8 |
long long | 8 | 8 | 8 |
unsigned long | 4 | 4 | 8 |
最大存储空间 | 2^16 | 2^32 | 2^64 |