三目运算符

三目运算符也叫条件运算符、三元运算符,它是唯一有 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("不是闰年");
    }
}

突然头脑清晰。

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值