int a=5,b=4,c=3,d=2;if(a>b>c) printf("%d",d);else if((c-1>=d)==1) printf("%d\n",d+1);else

printf("%d\n",d+2);求高手详解

程序输出3
>是从左往右结合;所以a>b返回1,然后1>c返回0,即false,
所以判断((c-1>=d)==1), 由于减号优先级高于>=;所以先计算c-1,返回2
2>=d返回1,1==1结果是true,所以输出d+1=3.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-23
程序写成这样好注释:
int a=5,b=4,c=3,d=2;
if ( a>b>c ) printf("%d",d); //由于计算((a>b)>c)=>((真值1)>c) => 假值0,所以此句printf未被调用
else if ( (c-1>=d)==1 ) printf("%d\n",d+1); //由于表达式((c-1)>=d)==1) => ((2>=2)==1) => ((真值1)==1) => (真值1),所以此句printf被调用,输出3和换行符
else printf("%d\n",d+2); //由于上边条件是真,所以此句未被调用
第2个回答  2013-01-23
修改后:

void main()
{
int a=5,b=4,c=3,d=2;
if((a>b) && (b>c)) // (a>b>c) // 由于5>4 并且4>3,所以输出d.

{
printf("%d",d);
}
else if(((c-1) >= d) == 1) // ((c-1>=d)==1)
{
printf("%d\n",d+1);
}
else
{
printf("%d\n",d+2);
}
}
第3个回答  2013-01-23
程序有错误啊,比较大小不能那么写,应该是if(a>b&&a>c)
第4个回答  2013-01-23
if(a>b>c) 更改为if((a>b)&&(b>c)) 输出答案为 2.
相似回答