一个关于三目运算符的问题
#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请问也是这个问题嘛 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 三个中最大的那个,然后输出,至于不是最大的另外两个数谁大谁小,是无所谓的 a > b了,就说明b小,肯定不是最大的
至于你的结果,明明定义的整型,非要输入小数,结果不奇怪才怪 还有不应该是求助帖嘛{:10_243:} 巴巴鲁 发表于 2020-10-4 09:24
还有不应该是求助帖嘛
啊 发错版了不好意思{:10_297:} 风过无痕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:} 巴巴鲁 发表于 2020-10-4 09:23
a > b了,就说明b小,肯定不是最大的
至于你的结果,明明定义的整型,非要输入小数,结果不奇怪才怪
啊怪不得那么奇怪hhhhhhhhhhh{:10_284:} whale-1901 发表于 2020-10-4 12:22
哇我懂了谢谢您嘞
懂了,能给个最佳答案吗? 风过无痕1989 发表于 2020-10-4 22:43
懂了,能给个最佳答案吗?
不好意思我发错版了这里好像没有最佳答案
不过没有关系 我又问了一遍您要不要在新帖子里粘贴一下您的回答我给你最佳答案{:10_266:}
https://fishc.com.cn/thread-181571-1-1.html
页:
[1]