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

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

时间: 2024-10-07 07:04:52

双感叹号!!运算符的用法的相关文章

书写优雅的shell脚本(五)- shell中(())双括号运算符

在使用shell的逻辑运算符"[]"使用时候,必须保证运算符与算数之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展. 1.语法: ((表达式1,表达式2-)) 2.特点: (1)在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等. (2)在双括号结构中,所有变量可以不加入:"$"符号前缀. (3)双括号可以进行逻辑运算,四则运算 (4)双括号结

linux shell “(())” 双括号运算符使用

导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展. 使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等. 2.在双括号结构中,所有变量

Lua中..和#运算符的用法

Lua中..和#运算符的用法 样例 试试以下的样例就明确了在Lua编程语言提供的其它运算符: a = "Hello " b = "World" print("Concatenation of string a with b is ", a..b ) print("Length of b is ",#b ) print("Length of b is ",#"Test" ) 当建立并运行上

python运算符与用法

运算符与用法 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5得到8.'a' + 'b'得到'ab'. - 减 得到负数或是一个数减去另一个数 -5.2得到一个负数.50 - 24得到26. * 乘 两个数相乘或是返回一个被重复若干次的字符串 2 * 3得到6.'la' * 3得到'lalala'. ** 幂 返回x的y次幂 3 ** 4得到81(即3 * 3 * 3 * 3) / 除 x除以y 4/3得到1(整数的除法得到整数结果).4.0/3或4/3.0得到1.3333333333

JavaScript中instanceof运算符的用法以及和typeof的区别

instanceof : 为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型栗子①: <script type="text/javascript"> var aColors = ["red", "green", "blue"]; alert(typeof aColors[0]); //output "string" alert(aColors[0] inst

linux shell &ldquo;(())&rdquo; 双括号运算符使用

linux shell "(())" 双括号运算符使用 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展.   使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表

JS逗号运算符的用法详解

逗号运算符的用法详解 注意: 一.由于目前正在功读JavaScript技术,所以这里拿JavaScript为例.你可以自己在PHP中试试. 二.JavaScript语法比较复杂,因此拿JavaScript做举例. 最近重新阅读JavaScript权威指南这本书,应该说很认真的阅读,于是便想把所学的东西多记录下来.后 面本人将逐步写上更多关于本书的文章. 本文的理论知识来自于JavaScript权威指南,我这里做一下整理,或者说叫笔记. 如果你的基础够好的话,完全理解不成问题,但是如果读得有些郁闷

【Java中各运算符的用法】

Java的运算符可分为4类:算术运算符.关系运算符.逻辑运算符和位运算符. 1.算术运算符 Java的算术运算符分为一元运算符和二元运算符.一元运算符只有一个操作数:二元运算符有两个操作数,运算符位于两个操作数之间.算术运算符的操作数必须是数值类型. (1)一元运算符: 一元运算符有:正(+).负(-).加1(++)和减1(--)4个. 加1.减1运算符只允许用于数值类型的变量,不允许用于表达式中.加1.减1运算符既可放在变量之前(如++i),也可放在变量之后(如i++),两者的差别是:如果放在

shell中感叹号与引号用法

线上环境需要定期清理缓存,如下: [[email protected] scripts]# curl http://10.238.74.31/irm/manualDataSyncPage!synchronizeCrmGroupCustomerInfo.html?UserName=004&Password=ZHzg-123 -bash: !synchronizeCrmGroupCustomerInfo.html?UserName=004: event not found "!"在