C和C++的各种数据类型所占据的字节数挺混乱的,因为没有一个明确的标准,不像Java和C#之类的语言,标准和编译器都是一家做的,自然很明确。C的编译器由各个商业公司或组织自行针对各自平台环境进行开发,产生了很多的差异。这边做个大概的不完全的总结。
32位机器下大多数的编译器:
指针:由于32位需要2^32的地址,因此指针需要32位空间,也就是4个字节
char:1字节
short:2字节
int:大部分4字节
long:4字节
long long:8字节
float:4字节
double:8字节
16位不同的有:
指针:2字节
int:字节
64位不同的有:
指针:8字节