首先强调一点,char, short, float, double在各个系统中字节数都一样
16位系统 | 32位系统 | 64位系统 | |
char | 1 | 1 | 1 |
short | 2 | 2 | 2 |
float | 4 | 4 | 4 |
double | 8 | 8 | 8 |
long double | 无 | 10/12 | 10/16 |
int | 2 | 4 | 4 |
long | 4 | 4 | 8 |
long long | 8 | 8 | 8 |
指针 | 2 | 4 | 8 |
现在讨论一下int, long.
起初在16为系统中, int 和 short一样,都为2; 到了32/64位系统,int升级为4字节;
在16/32为系统中,long为4字节; 到了64位系统long升级成8字节.
指针的大小随着系统的变化分别是2/4/8字节
long double型数据有效字节都是10,为了对其而分配了12/16字节.