iOS中奇妙的三目运算符示例详解

  

  

三目运算符:也叫三元运算符。这个运算符的符号是:& # 63;:、下面这篇文章主要给大家介绍了关于iOS三目运算符的相关内容,分享出来供大家参考学习、下面话不多说了,来一起看看详细的介绍吧

  

  

一般情况下,我们使用三目运算符(?)的语法格式是:

  
  

(表达)? if-true-statement: if-false-statement;
  

     

如果表达式表达结果为真,则执行if-true-statement,否则执行if-false-statement。
  

  

我们经常会使用三目运算符进行简单的判断赋值,例如:

  
  

y=x & # 63;x: z;
  

     

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

  

  

但是偶尔我们也会看到这种用法:

  
  

y=x & # 63;:z;
  

     

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

  

通过几次实验发现,当x为真时,y的值与x值一致。那我猜测& # 63;与:之间省略了x。
  

  

也就是说,y=x & # 63;:z;与y=x & # 63;x: z;等价,这样就和事实相一致了。

  

  

但是,这这只是最简单的情况,那么稍微复杂一点的情况呢?
  

  

如:比;b & # 63;:b中间省略了什么呢?会是吗?
  

  

经过验证后发现,并不是a。
  

  

其实它是省略了比;b。
  

  

也就是说比;b & # 63;:b等价于比;b & # 63;一个比;b: b;
  

  

那么这样似乎可以得出结论,& # 63;与:中间省略的东西,是与& # 63;之前的表达式一致的。
  

  

那么确实是这样的吗?

  

  

我们知道,在OC中,有一类很奇怪的运算符、自增(+ +)和自减(——)运算符。那么它在三目运算符中的表现如何呢?
  如:

        int x=0;   int y=x + + & # 63; + + x: 3;      

则最终,y的值为2。
  

  

然而,         int x=0;   int y=x + + & # 63;: 3;      

最终,y的值居然是1。
  

  

怎么两次的结果不一致呢?按照上面的结论,y的值应该都是2才对啊。
  

  

那为什么第一种结果y的值为2,而第二种结果y的值为1呢?

  

  

据我猜想,& # 63;与:之间省略的应该是& # 63;之前表达式的值,而不是省略的表达式。
  

  

这样就可以解释上面所有的情况了。

  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

iOS中奇妙的三目运算符示例详解