C语言写出逻辑表达式的值

#include <stdio.h>
#include <math.h>
void main()
{
int a=3,b=4,c=5,x,y;
printf("putout:%d\n",a+b>c&&b==c);
printf("putout:%d\n",a||b+c&&b-c);
printf("putout:%d\n",!(a>b)&&!c||1);
printf("putout:%d\n",!(x=a)&&(y=b)&&0);
printf("putout:%d\n",!(a+b)+c-1&&b+c/2);
}
为什么值是0,1,1,0,1???
到底是怎么算出来的啊,求解释,新手,真心搞不懂。。。

1、实现用户输入成绩_正确为true__错误为false的方法代码。

2、测试的结果如下所示。

3、实现判断闰年的方法代码,如下图所示。

4、测试的结果如下所示。

5、实现与或的短路问题代码如下所示。

6、最后测试的结果如下图所示。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-14
&&是逻辑与,||是逻辑或;
只是判断后面的表达式成立值成立值就为1,不成立就为0;
比如第一个是7>5&&4==3, 4==3显然是不成立的,所以值为0;
第2个回答  推荐于2017-09-18
C语言中非0的都为真 表示判断条件成立

printf("putout:%d\n",a+b>c&&b==c); // 4 == 5 为假 就是0 因为用的是&&必须两面都是真才为真

printf("putout:%d\n",a||b+c&&b-c); //(a || (b+c)) && (b-c) ,真 || 真 && 真 = 真

printf("putout:%d\n",!(a>b)&&!c||1); //(!(a>b) && !c) || 1 ,(假 && 假) || 真 = 真

printf("putout:%d\n",!(x=a)&&(y=b)&&0); // !(x=a) && (y=b) && 0 (假 && 真) && 假 = 假

printf("putout:%d\n",!(a+b)+c-1&&b+c/2); // !(a+b) + c - 1 && b + c / 2 ,(假 + c - 1) && 6 = 真本回答被提问者采纳
第3个回答  2013-02-14
非0即为真
&&是逻辑与,||是逻辑或,优先级:&&>||

1.printf a+b>c(真) b==c(真)
2.printf a(真) 因为是"||"运算,后面就不用看了
3.printf !(a>b)(真) !c(假) 1(真)
4.printf 0(假) 因为是“&&”运算,肯定是0
5.printf !(a+b)+c-1(真) b+c/2(真)
第4个回答  2013-02-14
第一个,a+b>c 就是3+4>5成立,为1;而b不等于c,b==c为0,而&&两者都是1得值才是1,所以第一个为0.
第二个,此处+-优先级最高,其次是&&,最低是||,注意同是逻辑运算符优先级不一样。还须注意,按照优先级加括号:
a || b + c && b - c
=a || ((b + c) && (b - c))
=3 || ((4 + 5) && (4 - 5))
=3 || 1
=1
第三个,相当于((!(a>b))&&(!c))||1),||有1就是1,所以就是1。
第四个,相当于(!a)&&b&&0,也就是0&&1&&0,所以为0。
第五个,((!(a+b))+c-1)&&(b+c/2)=(!7+5-1)&&(4+2)=(0+5-1)&&(6)=4&&6=1。
逻辑表达式只要不是0,其他都是1

参考资料:http://wenku.baidu.com/view/79085086b9d528ea81c77943.html

相似回答