位域可以按需占用存储空间。可以多个变量公用一个存储单位,比如单字节,双字节等等。以下是试验的样例程序。
#include <cstdlib>
#include <iostream>
#pragma pack(2) //此处2,使得位域以2字节对齐。如果是1,则以1字节对齐。
using namespace std;
struct BitVariable {
unsigned short int a:2;
short int b:3;
//int :0; // 第一字节的后3位不用,填0,C从新字节开始.
short int c:6;
} BitVariable1;
int main(int argc, char *argv[])
{
struct BitVariable BV1;
BV1.a=2; //10
BV1.b=8; //1000
BV1.c=86; //1010110
cout<<BV1.a<<endl; //output 2 <===> 10B
cout<<BV1.b<<endl; //output 0 <===> 1000B
cout<<BV1.c<<endl; //output 22 <===> 10110B
cout<<sizeof(BitVariable)<<endl; //2 (如果pack(1),并且当c:1时,此处输出1,即按1字节对齐)
system("PAUSE");
return EXIT_SUCCESS;
}