sususususu 发表于 2022-10-31 18:46:43

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:48:50

本帖最后由 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) ;
}

dolly_yos2 发表于 2022-10-31 19:16:13

看样子是来做题的,如果是自己写的代码的话请拿走重写。
楼上所说的地方没什么非法的,尽管这种写法非常不推荐,实际上也是符合语法的
第一个 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]
查看完整版本: if问题,萌新求教