whale-1901 发表于 2020-10-4 23:30:41

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

#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-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 三个中最大的那个,然后输出,至于不是最大的另外两个数谁大谁小,是无所谓的
页: [1]
查看完整版本: 一个关于三目运算符的问题