单选题
下面C程序中,若在屏幕上输入数值331后回车,程序执行后,屏幕上显示的输出结果应为
________
。
main(void)
{ unsigned int a,b,c,d;
Scanf("%o",&a);
b = a>>4;
c = ~ (~ 0 << 4);
d = b & c;
printf("d=%o\n",d);
}
【正确答案】
B
【答案解析】[解析]
在屏幕上输入数值331后回车,a的值为八进制的331,其二进制表示为11011001。右移4位后为1101。故执行语句b=a>>4;得b的二进制表示为1101。
现在由语句c=~(~0<<4):计算c的值:
0: 0000000000000000
~0: 1111111111111111
~0<<4: 1111111111110000
~(~0<<4): 0000000000001111
故c的值为1111。
由d=b&c;得到d为1101,即八进制的15。故本题答案为B。