作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 04:50:27
#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
#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 %d %d\n",a,b,m,n);
}
为何是1 1 0 而不是0 1 0 a=(m=a>b)&&(n=c>d)||++a==b--;
优先级我看了但是还是不懂
运算符优先级,先括号,再是++、--、==、&& ||、最后是=
当计算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