三目运算符

发布时间:2024年01月23日

三目运算符也叫条件运算符、三元运算符,它是唯一有 3 个操作数的运算符。三目运算符和 if else 条件判断类似。

语法结构

<表达式1> ? <表达式2> : <表达式3>;

意思是先求表达式 1 的值,如果为真,则执行表达式 2,并返回表达式 2 的结果;如果表达式 1 的值为假,则执行表达式 3,并返回表达式 3 的结果。

三目运算符与if else的比较

先简单举个例子:

  int a,b,c;
  a=7;
  b=6;
  if (a>b){
    c=a;
  }
  else {
    c=b;
  }

等同于

  int a,b,c;
  a=7;
  b=6;
  c=(a>b)?a:b;

二者输出的结果都是c=7

相比较之下使用三目运算符更优美不是么,然而它却是一朵带刺的玫瑰。(要上强度了

eg:1.输入三个正整数并给它们排序(汗流浃背

int min, mid, max, x, y, z;
scanf("%d %d %d",&x,&y,&z);
min = (x > y ? y : x) > z ? z : (x > y ? y : x);
max = (x > y ? x : y) > z ? (x > y ? x : y) : z;
mid = x + y + z - min - max;
printf("min=%d\nmid=%d\nmax=%d", min, mid, max);

解释:假设x=1,y=2,?z=3,显而易见min=x=1。首先分析(x > y ? y : x),可见 x>y?为假,则返回x此时将(x > y ? y : x)当作 x 处理。则(x > y ? y : x) > z ? z : (x > y ? y : x)就变成了x > z ? z : x? 可见 x>z 为假,在、于是返回 x 的值给min。

? 2.使用三目运算符嵌套判断year是不是闰年,是则返回1,不是返回0。

  int year;
  year=(year%100==0)?(year%400==0?1:0):(year%4==0?1:0);

可见三目运算符的使用有时难以理解,所以三思而后行。

如果使用if else:

int leap_year(int year) {
    if (year % 4 == 0 && year % 100 != 0) {
        printf("是闰年");
    }
    else if (year % 400 == 0) {
        printf("是闰年");
    }
    else {
        printf("不是闰年");
    }
}

突然头脑清晰。

文章来源:https://blog.csdn.net/2301_80658096/article/details/135692050
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。