鱼C论坛

 找回密码
 立即注册
查看: 2077|回复: 1

[已解决]一个关于三目运算符的问题

[复制链接]
发表于 2020-10-4 23:30:41 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main(void)
{
        int a,b,c;
        int m;
        scanf("%d %d %d",&a,&b,&c);
        m =a>b?a>c?a:c:b>c?b:c;        // m = a>b?(a>c?a:c):(b>c?b:c)
        printf("%d\n",m);
        return 0;
}

这个程序中  m = a>b?(a>c?a:c):(b>c?b:c)  如果a>b 为真 执行a>c?语句 如果a>c?为真 输出a 可是无法判断b和c的大小
当我输入2 1.5 1  时输出结果为45  请问也是这个问题嘛
最佳答案
2020-10-5 05:07:10

m = a > b ? (a > c ? a : c) : (b > c ? b : c)  如果 a > b 为真,执行 a > c ? 语句,如果 a > c ? 为真,输出 a,如果 a > c ? 为假,输出 c ;
m = a > b ? (a > c ? a : c) : (b > c ? b : c)  如果 a > b 为假,执行 b > c ? 语句,如果 b > c ? 为真,输出 b,如果 b > c ? 为假,输出 c ;
这条语句的目的就是选出 a、b、c 三个中最大的那个,然后输出,至于不是最大的另外两个数谁大谁小,是无所谓的

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-5 05:07:10 | 显示全部楼层    本楼为最佳答案   

m = a > b ? (a > c ? a : c) : (b > c ? b : c)  如果 a > b 为真,执行 a > c ? 语句,如果 a > c ? 为真,输出 a,如果 a > c ? 为假,输出 c ;
m = a > b ? (a > c ? a : c) : (b > c ? b : c)  如果 a > b 为假,执行 b > c ? 语句,如果 b > c ? 为真,输出 b,如果 b > c ? 为假,输出 c ;
这条语句的目的就是选出 a、b、c 三个中最大的那个,然后输出,至于不是最大的另外两个数谁大谁小,是无所谓的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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