一、使用:
优点——节省空间;
缺点——受大小端的限制,特别注意(建议用位运算取代之)。
二、注意三点:
1、只有unsigned型和int型(VC上long、short也没报错,???);
2、unsigned :0;//定义长度为0的位段时:(1)不能指定名字,否则编译不过(2)下一个位段从新的单元开始;
3、每个位段不能超过一个位单元的大小,否则编译过不去。
三、实例
1 struct A{//自身的对齐值为unsigned 4B 2 long a:3; 3 int b:23;//26bit,3B 4 unsigned c:6; 5 unsigned d:6; 6 char e; 7 } sa;
struct A的自身对齐值是Max(sizeof(unsigned), sizeof(char))为4;
每个成员都赋值为3后的内存空间分布图:
0000 1100 0000 0000 0000 0000 0001 1011//a, b, c
____ ____ ____ ____ ____ ____ __00 0011//d
____ ____ ____ ____ ____ ____ 0000 0011//e注意:从下一个空间分配
原文:http://www.cnblogs.com/LFMY/p/3620408.html