#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==

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 00:26:05

#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==
#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--;
优先级我看了但是还是不懂

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