位域中,如:unsigned b:3;所谓的位域成员的取值范围,这里b的取值范围就是小于3比特吗?
下面这个程序里,x=%d的值是怎么来的呀?
pbit->a=0;
pbit->b&=3;
pbit->c|=1;
这些是什么意思?
多谢!多谢!
尽量清楚点。
#include "stdio.h"
struct bs
{ unsigned a:1;
unsigned b:3;
unsigned c:4;
}bit,*pbit;
main()
{
char x;
bit.a=1; bit.b=7;bit.c=15;
printf("%d,%d,%d\n",bit.a,bit.b,bit.c);
x=0;
memcpy(&x,(char*)&bit,sizeof(char));
printf("0.x=0x%x,x=%d\n",x,x);
pbit=&bit;
pbit->a=0;
pbit->b&=3;
pbit->c|=1;
printf("%d,%d,%d\n",pbit->a,pbit->b,pbit->c);
x=0;
memcpy(&x,(char*)pbit,sizeof(char));
printf("1.x=0x%x,x=%d\n",x,x);
}
|