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);求高手详解

第1个回答  2020-05-20
程序输出3
>是从左往右结合;所以a>b返回1,然后1>c返回0,即false,
所以判断((c-1>=d)==1),
由于
减号
优先级高于>=;所以先计算c-1,返回2
2>=d返回1,1==1结果是true,所以输出d+1=3.
第2个回答  2020-06-22
程序写成这样好注释:
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);
//由于上边条件是真,所以此句未被调用
第3个回答  2019-06-02
a>b>c
会解释成
(a>b)>c
其中
a>b成立,
得到1
所以就是
if(1>c)
这不成立,
所以做
else,
之後是
if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2)