鱼C论坛

 找回密码
 立即注册
查看: 2679|回复: 2

[已解决]if问题,萌新求教

[复制链接]
发表于 2022-10-31 18:46:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有以下程序,执行后的输出结果是(       )。

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);         

}

A  2
B  3
C  编译时出错
D  4




答案选什么呀,可以解释一下吗


最佳答案
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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) ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 00:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表