免费开源的iOS开发学习平台

OC选择结构:3-条件运算符/三目运算符

条件(conditional)运算符简介

条件运算符是Objective-C语言中较为特殊的一种运算符,因为它是三元运算符,也就是说它需要接收三个运算数。条件运算符的一般格式为:

condition ? expression1 : expression2

在这个语法当中,condition表示一个表达式,通常为关系表达式,编译器会首先对其求值。如果对condition的求值结果为真(非零)时,程序将返回expression1的结果,如果对condition的求值结果为假(值为零)时,程序将返回expression2的结果。例如:

max = a > b ? a : b;

上面代码的意思是比较 a 与 b 的大小,将 a 与 b 中较大的一个赋给 max。

条件运算符使用注意事项

条件运算符在使用中需要注意如下事项。

  • 条件运算符优先级高于赋值、逗号运算符,低于其他运算符,例如:m<n ? x : a+3等价于 :(m<n) ?(x) :(a+3)

  • 条件运算符具有右结合性。当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。例如:
    e1 ? e2 : e3 ? e4: e5e1 ? e2 : ( e3 ? e4 : e5) 等价。

使用条件表达式可以提高程序的运行效率,但是会降低程序的可读性,尤其是多重条件表达式嵌套使用时,会使程序阅读起来很吃力。

示例代码

https://github.com/99ios/2.4.3