第1个回答 2019-01-05
1> 答案是:n = 2;
2> 问题具体分析如下:
(m=a>b)&&(n=c>d) 分析: && 有短路特性,即 m=
(a>b) 为假则整个表达式为假,不计算(n=c>d) 所以n=2;
3> 测试程序:
#include
int main(int argc, char **argv)
{
int a=1, b=2, c=3, d=4, m, n;
m=n=2;
if((m=a>b)&&(n=c>d))
{
printf("(m=a>b)&&(n=c>d)");
}
else
{
//(m=a>b)&&(n=c>d) 中的 m = 0, n = 2
printf("(m=a>b)&&(n=c>d) 中的 m = %d, n = %d\n", m, n);
}
if((m=ad))
{
printf("(m=ad)");
}
else
{
//(m=ad) 中的 m = 1, n = 0
printf("(m=ad) 中的 m = %d, n = %d\n", m, n);
}
return 0;
}