some base knowledge

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)是:

[cpp] view plaincopy
 
  1. struct A  
  2. {  
  3.     int a;  
  4.     short b;  
  5.     int c;  
  6.     char d;  
  7. };  
  8. struct B  
  9. {  
  10.     int a;  
  11.     short b;  
  12.     char d;  
  13.     int c;  
  14. };  

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

posted @ 2014-08-17 14:02  一弦一仙  阅读(267)  评论(0编辑  收藏  举报