C语言写出逻辑表达式的值
#include<stdio.h>#include<math.h>voidmain(){inta=3,b=4,c=5,x,y;printf("putout:%d\n",a...
#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???
到底是怎么算出来的啊,求解释,新手,真心搞不懂。。。 展开
#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???
到底是怎么算出来的啊,求解释,新手,真心搞不懂。。。 展开
5个回答
展开全部
&&是逻辑与,||是逻辑或;
只是判断后面的表达式成立值成立值就为1,不成立就为0;
比如第一个是7>5&&4==3, 4==3显然是不成立的,所以值为0;
只是判断后面的表达式成立值成立值就为1,不成立就为0;
比如第一个是7>5&&4==3, 4==3显然是不成立的,所以值为0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于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 = 真
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 = 真
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
非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(真)
&&是逻辑与,||是逻辑或,优先级:&&>||
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(真)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个,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
第二个,此处+-优先级最高,其次是&&,最低是||,注意同是逻辑运算符优先级不一样。还须注意,按照优先级加括号:
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询