三⽬运算符“?:”省略中间操作的特殊⽤法及举例在使⽤三⽬运算符的时候,我们经常见到的是:
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
说明第⼀种写法输出的是执⾏了两次++操作的结果,⽽第⼆种写法只执⾏了⼀次++操作
所以当有++或--运算的时候,要根据需要判断要不要省略,不能贸然省去,从⽽引起不必要的错误
其实这种省略⽅式还是挺好的,特别是代码长度⽐较长的时候,可以在满⾜要求的前提下简化代码