有以下程序 main() { int x=3,y=2,z=1; printf("%d\n",x/y&~z); } 程序运行后的输出结果是

admin2009-04-15  11

问题 有以下程序    main()    { int  x=3,y=2,z=1;      printf("%d\n",x/y&~z);    }    程序运行后的输出结果是

选项 A、3
B、2
C、1
D、0

答案8

解析 位与运算符“&”,按二进位进行“与”运算,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0;取反运算符“~”,用来对一个二进制按位取反,即将0变1,1变0。在prinf()函数的表达式中,“&”前面表达式的值为1(3/2=1)表示为二进制为00000001,而按位取反运算符“~”的优先级高于按位与运算符“&”,先计算“&”后面的取反运算符“~”。z的二进制表示为00000001,取反后为11111110,最后进行“&”,即“00000001&11111110”可知结果为00000000,故最后的值为0。
转载请注明原文地址:https://kaotiyun.com/show/z7Xp777K
0

最新回复(0)