码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-08 19:55:19      阅读:362      评论:0      收藏:0      [点我收藏+]

标签:双感叹号   求反   

因为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)详见这里

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

标签:双感叹号   求反   

原文地址:http://blog.csdn.net/hherima/article/details/44944927

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!