help!!!关于c语言

来源:百度知道 编辑:UC知道 时间:2024/05/30 13:16:33
main()
{ int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a);
printf("%d,%d\n",k,m);
}
运行的结果为什么是:1,0而不是1,1。不是有m=a了么m应该是1啊。而如果程序改为:
main()
{ int a=1,b=2,m=0,n=0,k;
m=a;
k=(n=b>a)||(m=a);
printf("%d,%d\n",k,m);
}
结果就为1,1。以上的两程序有什么异同,请高手详细道来。谢谢啦!

第二个不用解释了吧
m = a;
因为 a 是 1
所以 m 是 1

第一个

k=(n=b>a)||(m=a);
因为 n=b>a 是真 || 是 或运算 左边是真
右边的部分就不再计算了
所以 m = a 并没有执行

所以 m 是 0

涉及C运算符的优先级和结合性。楼上说的很清楚了