下面C程序中,若在屏幕上输入数值331后回车,程序执行后,屏幕上显示的输出结果应为(63)。 main(void) { unsigned int a,b,c,d; Scanf("%o",&a); b = a>>4;

admin2009-02-01  16

问题 下面C程序中,若在屏幕上输入数值331后回车,程序执行后,屏幕上显示的输出结果应为(63)。    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);    }  

选项 A、d=10
B、d=15
C、d=25
D、d=45

答案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。
转载请注明原文地址:https://jikaoti.com/ti/bmI7FFFM
0

相关试题推荐
最新回复(0)