c语言,第八题为什么选c?

如题所述

关键知识点

1、非零数看成逻辑真

2、算数运算符优先级高于逻辑运算符

3、单目运算符!优先级高于算数运算符


!(a+b)*c-1&&b+c%2相当于(!(a+b)*c-1) && (b+c%2) = (!7*5-1) && (4+1) = (0*5-1) && 1=1


参考代码

#include <stdio.h>

int main()
{
   int a=3, b=4, c=5;
   int r;

   r=!(a+b)*c-1&&b+c%2;

   printf("%d\n",r);

return 0;
}

效果图

追问

1+4不是等于5吗?那里为什么是1?

追答

非零数看成逻辑真,所以5就看成1,-1也被看成1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-31
首先,逻辑表达式不是1就是0,这个要知道,然后呢,第八题是一个与表达式,第一个条件!(a+b)*c-1呢,a+b是7,然后!之后呢变为0,所以第一个表达式就为-1了,不是0就都为真了,同理第二个表达式也为真,所以两个真的与也为真,也就是1了。
第2个回答  2015-07-31
谁告诉你选c的
第3个回答  2015-07-31
首先答案不可能是0或者1外的答案……另外不要走进另外一个误区,只要不是0则为真,所以左边算出负数仍为真,右边估计你也懂了