#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--;
这句有点不明白啊,希望详细解释一下,优先级我看了但是还是不懂 展开
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--;
这句有点不明白啊,希望详细解释一下,优先级我看了但是还是不懂 展开
3个回答
展开全部
此题的优先级是
() 然后是++ -- 再是>< 再是&& ||最后是=
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
() 然后是++ -- 再是>< 再是&& ||最后是=
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上正解,祝你好运!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询