#include<stdio.h> main() { int a=1,b=2,c=3,d=4,m=5,n=6; a=(m=a>b)&&(n=c>d)||++a==b--; printf("%d %d

#include<stdio.h>main(){inta=1,b=2,c=3,d=4,m=5,n=6;a=(m=a>b)&&(n=c>d)||++a==b--;print... #include<stdio.h>
main()
{
int a=1,b=2,c=3,d=4,m=5,n=6;
a=(m=a>b)&&(n=c>d)||++a==b--;
printf("%d %d %d %d\n",a,b,m,n);
}
为何是1 1 0 6?而不是0 1 0 0?谢谢您的解答, a=(m=a>b)&&(n=c>d)||++a==b--;
这句有点不明白啊,希望详细解释一下,优先级我看了但是还是不懂
展开
 我来答
昝采春Z5
2010-12-25 · TA获得超过486个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:161万
展开全部
运算符优先级,先括号,再是++、--、==、&& ||、最后是=
当计算m=a>b时,得到m=0,0&&(n=c>d),因为0&&任何数都为0,所以不再计算后面的表达式(n=c>d),所以n的值没变,仍是6,然后再用0去||++a==b--,++a是先自增再引用,b--是先引用再自减,所以++a==b--的值是真为1(a现在为2,b现在为1) ,0||1的结果为1,然后再赋值给a ,所以最终的值是1106
一杯坠
2010-12-26 · TA获得超过362个赞
知道答主
回答量:76
采纳率:0%
帮助的人:50.8万
展开全部
此题的优先级是
() 然后是++ -- 再是>< 再是&& ||最后是=
1、m=a>b可以看做m=(a>b),a>b不成立得到m=0,
2、0&&(n=c>d)&&遇0则0 ,所以不再计算后面的表达式(n=c>d),n的值没变,仍是6,
3、0||++a==b--,++a是先增再用,b--是先用再减,所以++a==b--的判断成立,值是真为1(即a=2,b=1) ,0||1的结果为1,然后再赋值给a ,所以最终的值是1106
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oeg2006
2010-12-26 · 超过12用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
楼上正解,祝你好运!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式