作业帮 > 综合 > 作业

这个c程序中m怎么等于0,n怎么等于2啊

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/23 16:32:27
这个c程序中m怎么等于0,n怎么等于2啊
#include
main()
{
int a,b,c,d,m,n;
a=5,b=7,c=3,d=8,m=2,n=2;
(m=a>b)&&(n=c>d);
printf("a=%d,b=%d,c=%d,d=%d,m=%d,n=%d",a,b,c,d,m,n);
getch();
}
这个c程序中m怎么等于0,n怎么等于2啊
关键是这句:(m=a>b)&&(n=c>d);
这本身是个逻辑表达式,所以先计算左边括号中的表达式的值,即m = a > b.
因为逻辑运算符>的优先级高于赋值运算符=,所以先求a > b的值.
而a = 5,b = 7,所以a > b不成立,逻辑运算结果为0,再把0赋值给m.
所以m的值会是零,而且整个表达式(m = a > b)的值也是0.
这时候计算机会发现后面的运算是个与运算,而0与上任何值都是0.不需要再去求后面括号中表达式的值,所以后一个表达式中给n赋值的操作并不会得到执行,所以n的值还是保持初始化时的2不变.