har类型的长度被定义为一个8位字节,这很简单。
short类型的长度至少为两字节。在有些计算机上,对于有些编译程序,short类型的长度可能为4字节,或者更长。
int类型是一个整数的“自然”大小,其长度至少为两字节,并且至少要和short类型一样长。在16位计算机上,int类型的长度可能为两字节;在32位计算机上,可能为4字节;当64位计算机流行起来后,int类型的长度可能会达到8字节。这里说的都是“可能”,例如,早期的Motorala 68000是一种16/32位的混合型计算机,依赖于不同的命令行选项,一个68000编译程序能产生两字节长或4字节长的int类型。
long类型至少和int类型一样长(因此,它也至少和short类型一样长)。long类型的长度至少为4字节。32位计算机上的编译程序可能会使short,int和long类型的长度都为4字节——也可能不会。
在32位系统环境中,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是:
- struct A
- {
- int a;
- short b;
- int c;
- char d;
- };
- struct B
- {
- int a;
- short b;
- char d;
- int c;
- };
A、16,16 B、16,12 C、13,12 D、11,16
对于StructA为 a为4个字节 b为2个字节 c为四个字节 d为一个字节 根据字节对其则有16
a 1111
11
1111
1
对于StrutB a为4个字节 b为两个字节 d为一个字节 c为四个字节 则有12个字节
1111
11 1
1111