C语言程序分析 这个程序的结果为什么是 1

#include<stdio.h>
void main()
{
int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}

这个你首先要了解运算符的优先级。
在这里!(非)的优先级最高。
其实这行程序等效于:
d=(!a)&&(!b)||(!c);
a=4,b=5,可见a,b的值都是非零。
所以!a=0,!b=0。
c=0,所以!c=1。
那就是d=0&&0||1.
&&的优先级高于||.
所以0&&0=0.
继续:0||1=1;
所以最后d=1;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-29
优先级顺序为 !>&&>||
所以
d=!a&&!b||!c =(!a && !b) || (!c)
这里c=0;
则!c为真,为true,||只要有一个为真,即为真,所以d为真,也就是1.
第2个回答  2011-09-29
d=!a&&!b||!c
由于a不等于0,因此!a=0,同理!b=0
由于c=0,因此!c=1
上式就变成了
d=0&&0||1
=0||1
=1
第3个回答  2011-09-29
d = !a && !b || !c
等价于 d= ( !a && !b ) || !c
= 0 || !c = 0 || 1 = 1
a的内容为4 !a 运算的计算结果为0 (整型变量非零为真,0为假)
&& 逻辑与运算,只要有一个运算对象为假,计算结果为假
c的内容为0 !c 运算的计算结果为1
|| 逻辑或运算,只要有一个运算对象为真,计算结果就为真,
运算结果的逻辑真用1表示,所以整个表达式的计算结果为1,送入变量d
第4个回答  2011-09-29
“!a&&!b||!c ”这是一个逻辑表达式。逻辑表达式的值只有“1”或“0”两个。
“!”非的优先级最高,即先运算。
!a的值是0,即假。
!b的值也是0,即假。
“&&”是逻辑“与”。
所以,表达式!a&&!b的值为真,
“||”是逻辑“或”。
!c的值是1,即真。
!a&&!b||!c等价于:真或真。
所以,d的值为:1
相似回答