三目运算符“?:”省略中间操作数

在使用三目运算符的时候,我们经常见到的是:

x ? x : y

就是if else的简写

如果x为真,就返回x,如果x为假,就返回y。这是最简单最基本的用法。

但是有时候会看到这种用法

x ?: y

?与:之间没有任何操作数,这是什么用法呢?

在通过几个实例的实验后,猜测?与:之间省略了x

也就是说x ? : y  就是 x ? x : y

这样就可以讲的通了。


那么形如 a > b ?: b 中间省略了什么呢,是a吗

验证之后发现并不是a

其实省略了 a > b

也就是说 a > b ?: b 等价于 a > b ? a > b : b

那么可以这样下结论:“?:” 中间省略的东东是与 “?”之前的数或者表达式完全一致。


值得注意的是:在某种情况下,还是会有出入的

譬如 y = ++x ? ++x : 3  与 y = ++x ?: 3

输出的y的结果是不一样的,这是为什么呢?

当x的初始值为0时,第一种写法的输出y的结果为2 ,而第二种写法的输出y的结果为1

说明第一种写法输出的是执行了两次++操作的结果,而第二种写法只执行了一次++操作

所以当有++或--运算的时候,要根据需要判断要不要省略,不能贸然省去,从而引起不必要的错误


其实这种省略方式还是挺好的,特别是代码长度比较长的时候,可以在满足要求的前提下简化代码


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值