#include main() { int a=1,b=2,c=3,d=4,m=5,n=6; a=(m=a>b)&&(n

学习 时间:2026-03-30 11:00:49 阅读:2358
#include 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#includemain(){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 而不是0 1 0 a=(m=a>b)&&(n=c>d)||++a==b--;优先级我看了但是还是不懂

最佳回答

清爽的月亮

机智的金毛

2026-03-30 11:00:49

运算符优先级,先括号,再是++、--、==、&& ||、最后是=当计算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

最新回答共有2条回答

  • 强健的山水
    回复
    2026-03-30 11:00:49

    运算符优先级,先括号,再是++、--、==、&& ||、最后是=当计算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

上一篇 如有心帮忙,请快速,本人已没有多少时间写作文了!快速!

下一篇 一毫米等于多少分米?