双感叹号!!运算符的用法

因为C语言中,所有非0值都表示“真”。所以!非0值 = 0,而!0 = 1。双感叹号!!作用就是非0值转成1,而0值还是0.双感叹号!!是为了把"非0值"转换成1,而0值还是0。!!不难理解,举例:


!!(expression) 等价于!(!expression)。如果express是一个指针,最终结果就是1.这样!!(expression)可以给bool变量赋值了。


用法举例:对于一个判断的函数如下,老的写法可能是这样:

- (BOOL)isLaunched {
if(self.launchCache)
    return yes;
else
    return NO;
return NO;
}

如果使用!!,则是这样

- (BOOL)isLaunched {
    return !!self.launchCache;
}

所以,本人觉得!!只是节省了代码,如果是if语句可以不必要这么写,但是上面!!的写法,确实节省了代码的行数。
还有一些其他场景:比如一个开关,当某个数值大于0的时候,就打开,等于0的时候就关闭,使用!!可以一行代码搞定。
类似这样节省代码行数的特别用法还有三目运算符省略中间表达式的写法(exp1?:exp2)详见这里

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值