bit.x=1;
bit.y=9;
bit.z=6;/*分別給三個位域賦值*/
printf("bit.x=%d,bit.y=%d,bit.z=%d\n",bit.x,bit.y,bit.z);
/*以整型格式輸出三個位域的內容*/
pbit=&s5;/*位域變量bit的地址賦給指針變量pbit*/
pbit->x=0;
pbit->y&=10;/*使用了複合的位運算符“&=”,相當於pbit->b=pbit->b&10,結果為8*/
pbit->z|=3;
/*使用了複合位運算符“|=”,相當於pbit->c=pbit->c|3,其結果為7*/
printf("pbit->x=%d,pbit->y=%d,pbit->z=%d\n",pbit->x,pbit->y,pbit->z);
/*用指針方式輸出了這三個域的值*/
}
運行結果:
bit.x=1bit.y=9bit.z=6
pbit->x=0pbit->y=8pbit->z=7
習題十二
1.運算符&&、&、||、|中,優先級最低的是,優先級最高的是。
2.若a=6、b=8,則a&b的值是。
3.若x=10,y=56,則x|y的結果是。
4.表達式0x15|0x27的值是。
5.若有以下程序段,則執行以下語句後x、y的值分別是。
main()
{intx=5,y=6;
x=x^y;
y=y^x;
x=x^y;
printf("%d,%d",x,y)
}
6.設有“chara,b;”,現要屏蔽a中的某些位,通過a與b進行&運算,隻保留第3位和第5位(右起為第1位),則b的二進製數是。
7.以下程序的運行結果是。
main()
{charx=23;
x=x&023;
printf("%d,%o\n",x,x);
}
8.設二進製數x的值是11000011。若想通過&運算使x中的高4位不變,低4位清零,則y的二進製數是。
9.以下程序的運行結果是。
main()
{chara=0x28,b,c;
b=(a&0x7)2;
c=(a&0x60)3;
c=a&c;
printf("%x\n",c);
}
10.以下程序的運行結果是。
main()
{unsigneda=0254,x,y;
intz=10;
x=a(16-z);
printf("x=%o\n",x);
y=az;
printf("y1=%o\n",y);
y|=x;
printf("y2=%o\n",y);
}