C语言已知a=5,b=6,c=7,d=8,m=2,n=2执行(m=a>b)&&(n=c>d)后n值为

答案好像是2求详细解答。。。... 答案好像是2求详细解答。。。 展开
 我来答
旅春冬TJ
2013-12-20 · TA获得超过1082个赞
知道大有可为答主
回答量:1271
采纳率:66%
帮助的人:494万
展开全部
答案不可能是2,答案应该是0,这是一个逻辑表达式不可能出现0,1之外的数字。前边>的优先级高于赋值也就是先判断a>b是假,也就是0,把这个零赋值给m,此时m=0,因为逻辑符号&&有短路效应,也就是说前边只有出现假,就不会接着判断后边的一部分,所以整体表达式是假,也就是0
感情程序员
推荐于2018-03-01 · TA获得超过1615个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:82.7万
展开全部

答案是2没错。

首先,你得知道运算符优先级是 >优先于=

因此先执行a>b这条语句,这条语句运行结果是返回一个bool值,只有0和1两种情况

因为a=5,b=6所以语句a>b会返回0,并将结果赋值给m

因此在左边那个括号里面的最终结果是m=0,

而&&符号是“并且”的意思,往往放在if()中来判断,只有两边都非0,才会执行if()下面的语句,

当&&的左边为0,它就不执行&&右边的语句(因为这条语句“并且”的意思,当左边为0,就是为假,不论右边出现什么情况,整个语句必然是假,执行右边语句没意义,编译器跳过不执行)


综上,可得n的值没改变,为2


@楼上的

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式