struct bs
{
unsigned a:1;
unsigned b:3;
unsigned c:4;
} bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15;
printf("%d,%d,%d\n",bit.a,bit.b,bit.c);
pbit=&bit;
pbit->a=0;
pbit->b&=3;
pbit->c|=1;
printf("%d,%d,%d\n",pbit->a,pbit->b,pbit->c);
}
上例程序中定义了位域结构 bs,三个位域为 a,b,c。说明了 bs 类型的变量 bit 和指向
bs 类型的指针变量 pbit。这表示位域也是可以使用指针的。程序的 9、10、11 三行分别给三
个位域赋值(应注意赋值不能超过该位域的允许范围)。程序第 12 行以整型量格式输出三个域
的内容。第 13 行把位域变量 bit 的地址送给指针变量 pbit。第 14 行用指针方式给位域 a 重
新赋值,赋为 0。第 15 行使用了复合的位运算符"&=",该行相当于:
pbit->b=pbit->b&3
位域 b 中原有值为 7,与 3 作按位与运算的结果为 3(111&011=011,十进制值为 3)。同样,程
序第 16 行中使用了复合位运算符"|=",相当于:
pbit->c=pbit->c|1
其结果为
松语文学免费小说阅读_www.16sy.com