下列程序的输出结果是( ) #include <stdio.h> void main() { int a = 2, b = 3, c = 0, d; d = !a && !b

下列程序的输出结果是( )
#include <stdio.h>
void main()
{ int a = 2, b = 3, c = 0, d;
d = !a && !b ||!c;
printf(“%d\n”, d);
}
选择一个答案
a. 1
b. 0
c. 编译出错
d. -1

A

因为首先要做!a && !b || !c计算,其中a,b都是非0值,c=0,所以!c=1,
那么d = !a && !b || !c = 0 && 0 || 1 = 1
所以d = 1被输出,

希望有用。追问

我以前理解的是a = 2, b = 3, c = 0 , 所以计算!a为真 1,!b为真 1,!c为假 0.. 然后 1&& 1 || 0 = 1

追答

在C/C++里,0代表假,非0代表真,a,b都是真,c是假,都取非之后(!),a,b都是假,c是真。
也就是0&&0||1,并非1&&1||0。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-25
这个是考察你对算术运算符优先级的掌握的,有几个我也经常忘,很头疼,建议多记记。
d = !a && !b ||!c;
这里先计算!a,!b,!c的值,分别为0、0、1;再计算!a&&!b,为0;最后算 ……||!c 部分,为1咯。
还有,所有非0的数字都对应布尔值1,所有小于等于0的值对应布尔值0。
最后,答案选a。
第2个回答  2011-04-25
a
相似回答