年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1630|回复: 0

三目运算返回值为基本数据类型

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2014-8-30 20:45:23 | 显示全部楼层 |阅读模式
    基本场景: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语言中有对象的概念吗,对吧。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-5-7 14:17 , Processed in 0.042173 second(s), 18 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表