TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
基本场景:int a = (a > b) ? a : b; 这是一个最简单的a与b中取最大值的运算,如果a > b则a即为自己,反之a则取b的值,三目运算相当于轻量级的逻辑判断,可省去烦琐的if ( ){ } else{},但三目运算不是万能的,再举个例子
应用场景:NSString *string = (str1 == nil) ? : str2 : str1; 从语法上来理解,本次运算想得到的结果是,str1 与 str2 两个字符串中,取出非空对象赋值给string(如果两个都为空那就为空,这个超出本次讨论范围,先不谈),其实这样是不行的,编译器会报错,基本错误为:"Incompatible operand type ('int' and 'NSString *' )"译为不兼容的操作类型
根据以上可以得出结论,其实三目运算只针对基本数据类型(int , float, doble, char等)不支持对象操作,不能完全替代if else ,此外三目运算中不支持大括号,只适应于简单的计算或赋值场景,且用且珍惜。
其实也不难理解,因为三目运算是C语言中的语法,试问一下C语言中有对象的概念吗,对吧。
|
|