C++表达式(m=a>b)&&(n=c>b)的运算
题目:设整型变量m,n,a,b,c,d的值均为1,表达式(m=a>b)&&(n=c>b)的运算后,m,n的值是0,1.。。为什么?解释下,谢谢。。。...
题目:设整 型 变量m ,n ,a ,b ,c ,d的值均为1,表达式(m=a>b)&&(n=c>b)的运算后,m,n的值是0,1.。。为什么?解释下,谢谢。。。
展开
4个回答
展开全部
根据优先级顺序这个表达式等价于(m=(a>b))&&(n=(c>b));
a>b不成立,所以为false,即0,则m = 0;
因为&&处理机制的原因,左边表达式为假,则整个表达式为假,就不对右边表达式进行计算了。
a>b不成立,所以为false,即0,则m = 0;
因为&&处理机制的原因,左边表达式为假,则整个表达式为假,就不对右边表达式进行计算了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先看第一个括号:> 优先于 = ;表达式 a > b 为假返回0,然后将 0 赋给 m ,故 m = 0;
同理:n = 0;
同理:n = 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
&& 是需要左右两边都为真时,才是真。
x && y 也就是需要x和y为真,x&&y为真,
当x为假时,编译器已经能判断出 x&&y为假了,不可能为真了,此时编译器就不再往下判断了,也就是说y代表的东西不再执行了。
所以
m=a>b 由于 a=b=1 所以a>b为假,用int表示也就是0,所以m=0 为假
所以 n=c>b不再执行,所以n的值不变,所以 n=1
x && y 也就是需要x和y为真,x&&y为真,
当x为假时,编译器已经能判断出 x&&y为假了,不可能为真了,此时编译器就不再往下判断了,也就是说y代表的东西不再执行了。
所以
m=a>b 由于 a=b=1 所以a>b为假,用int表示也就是0,所以m=0 为假
所以 n=c>b不再执行,所以n的值不变,所以 n=1
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询