if问题,萌新求教
有以下程序,执行后的输出结果是( )。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);
elseprintf("%d\n", d+2);
}
A2
B3
C编译时出错
D4
答案选什么呀,可以解释一下吗
本帖最后由 jackz007 于 2022-10-31 18:51 编辑
这一句非法
if(a>b>c)
得改为
if(a > b && b > c)
#include <stdio.h>
main(void)
{
int a = 5 , b = 4 , c = 3 , d = 2 ;
if(a > b && b > c) printf("%d\n", d) ;
else if(c - 1 >= d) printf("%d\n" , d + 1) ;
}
看样子是来做题的,如果是自己写的代码的话请拿走重写。
楼上所说的地方没什么非法的,尽管这种写法非常不推荐,实际上也是符合语法的
第一个 if 条件的拆解为 if((a>b)>c) ,标准指出 > 的结果当表达式为真时为 1 ,否则为 0 ,因此 a>b 的结果为 1 ,故 ((a>b)>c) 的结果为 (1>3) 即假,则不进入此部分的 then-block
第二个 if 条件部分则较为显然, c-1>=d 为真故结果为 1 ,而 1 == 1 ,因此进入此 then-block ,输出 d+1 即 3
页:
[1]