请问这个C语言运行结果是什么

来源:百度知道 编辑:UC知道 时间:2024/06/23 18:24:26
void main()
{ int a=5, b=4,c=3,d=2;
if(a>b>c)printf("%d\n",d);
else if((c-1>=d)==1) printf("%d\n",d+1);
else printf("%d\n",d+2);
}
答案为什么是3 请分析

1. a>b>c==>(a>b)>c==>1>c==>0,则执行else后语句
2. ((c-1>=d)==1)条件成立, printf("%d\n",d+1); 则结果 3

因为a,b,c符合条件语句else if((c-1>=d)==1) printf("%d\n",d+1);
所以只执行这条if语句,其他的不执行。所以输出的是d+1=3
(注意,你的第一条if语句的条件写法是错的,判断a>b>c要写成a>b&&b>c才是符合现实的表示意思的。因为写法有歧义,所以就当做是不符合条件的if语句,也就不执行了。)

a>b为真 即1 1>c 假

c-1>=d真 为1==1 执行d+1

下边else忽略

第一个if(a>b>c) 写法是不规范(错误)的, 他的值 恒为 0 ,也就是这个if 条件是永远不会成立的 , 接着执行第二条 if语句
if((c-1>=d)==1) 就相当于 if(c-1>=d) 带入值 c=3,d=2 ,此条件成立 于是就执行 printf("%d\n",d+1); 此时d=2, 打印 d+1 , 所以答案是3.