C语言基础题,求解!!

设a=1 b=2 c=3,表达式!(a>b)&&!c||5的值是 答案是1,求过程!!

以下判断借用true代表1,false代表0:
(a > b) 返回为 false,=> !(a > b) 为true => !(a>b) = true;
因为c = 3,所以!c 返回为 false => !c = false;
true && false 返回为false => !(a>b)&&!c = false。
5 > 0,返回true,=> 5 = true。
=>0 || 1 返回为true。
因为C语言里面没有true,false,就用1,0代替了。
所以输出了 1。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-18

由运算符优先级可知,原式等效于

((!(a>b))&&(!c))||5

由于||运算符右操作数为非零,所以前面的东西不用看也可知这个表达式结果为真,非零,即为1

第2个回答  2014-01-18
首先是 !(a>b) ,由于 a>b 不成立,所以结果是 0, 所以 !0 就是 1;
然后就是 !c 因为 c 不为 0,所以!c就是0
再然后就是 0||5 只要两边有一个不为零整个表达式就为真,所以结果是1
所以 1 && 1的结果就是1,明白了吧
第3个回答  2014-01-18
首先整个式子是判断,系统返回否0或是1
a>b是否,记0
!c| |5先看!c,c有值,!c为否0,但5为真1
所以!c| |5为真,记1
0&&11为真1
所以返回值为1
相似回答