whale-1901 发表于 2020-10-3 21:37:03

一个关于三目运算符的问题

#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请问也是这个问题嘛

风过无痕1989 发表于 2020-10-3 23:00:11

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 三个中最大的那个,然后输出,至于不是最大的另外两个数谁大谁小,是无所谓的

巴巴鲁 发表于 2020-10-4 09:23:57

a > b了,就说明b小,肯定不是最大的
至于你的结果,明明定义的整型,非要输入小数,结果不奇怪才怪

巴巴鲁 发表于 2020-10-4 09:24:55

还有不应该是求助帖嘛{:10_243:}

whale-1901 发表于 2020-10-4 12:20:58

巴巴鲁 发表于 2020-10-4 09:24
还有不应该是求助帖嘛

啊 发错版了不好意思{:10_297:}

whale-1901 发表于 2020-10-4 12:22:04

风过无痕1989 发表于 2020-10-3 23:00
m = a > b ? (a > c ? a : c) : (b > c ? b : c)如果 a > b 为真,执行 a > c ? 语句,如果 a > c ? 为真 ...

哇我懂了谢谢您嘞{:10_297:}

whale-1901 发表于 2020-10-4 12:26:38

巴巴鲁 发表于 2020-10-4 09:23
a > b了,就说明b小,肯定不是最大的
至于你的结果,明明定义的整型,非要输入小数,结果不奇怪才怪

啊怪不得那么奇怪hhhhhhhhhhh{:10_284:}

风过无痕1989 发表于 2020-10-4 22:43:51

whale-1901 发表于 2020-10-4 12:22
哇我懂了谢谢您嘞

懂了,能给个最佳答案吗?

whale-1901 发表于 2020-10-4 23:32:22

风过无痕1989 发表于 2020-10-4 22:43
懂了,能给个最佳答案吗?

不好意思我发错版了这里好像没有最佳答案
不过没有关系 我又问了一遍您要不要在新帖子里粘贴一下您的回答我给你最佳答案{:10_266:}
https://fishc.com.cn/thread-181571-1-1.html
页: [1]
查看完整版本: 一个关于三目运算符的问题