【C语言】【逻辑非】双感叹号的用法
关于!的用法温习
经典如是说
《C Programming Language》
By definition,the numeric value of a relational or logical expression is 1 if the relation is true,and 0 if the relation is false.The unary negation operator converts a non-zero operand into 0, and a zero operand in 1.
《ISO/IEC 9899:201x》
The result of the logical negation operator ! is 0 if the value of its operand compares
unequal to 0, 1 if the value of its operand compares equal to 0. The result has type int.
The expression !E is equivalent to (0==E).
简而言之
以!(cond)为例来说明:
- 取非运算,将cond和0比较;
- 结果为int类型的值;
例子
- if (flag) # flag为非0,则if条件判断为真
- if (!flag) # flag为0, 则if条件判断为真
关于!!(cond)
!!的含义
- !!(cond)等价于!(!cond),进行两次!运算,所以具体值如下面表格所示:
v/op | ! | !! |
---|---|---|
0 | 1 | 0 |
1(nonzero) | 0 | 1 |
也即:
!!(0) = 0!!(1) = 1!!(nonzero) = 1
!!的例子
#define IS_CAP_OF_XXX_FUNC (0x0000 0100)
INT32 cap = 0;
INT32 isSupportXXX = 0;cap = get_chip_capability(); #读取芯片能力集
isSupportXXX = !!(cap & IS_CAP_OF_XXX); #为1表示支持XXX功能,0表示不支持XXX功能;
实际,!!只是缩短了代码行数,用if判断可达到同样的目的。
如本文对你有些许帮助,欢迎大佬打赏:
支付宝及微信打赏方式
【C语言】【逻辑非】双感叹号的用法相关推荐
- 【JS】单感叹号 和 双感叹号 的用法
文章目录 用法 示例 用法 双感叹号!!可以将一个值转换成对应的Boolean值, 第一个感叹号!是将其转化成取反后的Boolean类型的值 第二个感叹号!!是将取反后的Boolean类型的值再进行一 ...
- c语言 感叹号啥作用,C语言中的双感叹号的作用
两个!是为了把 非0值 转换成1,而0值还是0. 因为C语言中,所有 非0值 都表示真.所以!非0值 = 0,而!0 = 1. 所以!!非0值 = 1,而!!0 = 0. 示例如下: #include ...
- c语言中输出字母时有个感叹号,C语言中的双感叹号的作用
两个!是为了把 非0值 转换成1,而0值还是0. 因为C语言中,所有 非0值 都表示真.所以!非0值 = 0,而!0 = 1. 所以!!非0值 = 1,而!!0 = 0. 示例如下: #include ...
- C语言中的双感叹号的作用
两个!是为了把 非0值 转换成1,而0值还是0. 因为C语言中,所有 非0值 都表示真.所以!非0值 = 0,而!0 = 1. 所以!!非0值 = 1,而!!0 = 0. 示例如下: #include ...
- C语言中双感叹号的作用
1.C语言中双感叹号的作用 (1)感叹号的作用:感叹号是逻辑运算符,表示逻辑非,也就是把真变成假,把假变成真: (2)在C语言中,0值表示假,非0值都是真,所以感叹号会把非0值变成0,而把0值变成1: ...
- js中!!的用法(双感叹号)
在javascript代码中经常会见到!!的情况,本文即以实例形式较为深入的分析javascript中2个感叹号的用法.分享给大家供大家参考之用.具体分析如下: javascript中的!!是逻辑&q ...
- 双逻辑非(!!)操作符
双逻辑非操作符的作用 双逻辑非操作,会把一个值(数字,字符串-..)转换为布尔值.第一次逻辑非操作取反的布尔,第二次获得最初元素本身对应的布尔. alert(!!false); //falsealer ...
- c语言:关于逻辑运算符(逻辑与、逻辑或和逻辑非)不易混淆的记忆方法
在初学C语言时,初学者在逻辑运算符及其优先级问题上很容易弄混或记错,所以我为这三种逻辑运算符做个易于初学者学习的整理: 在进行逻辑运算时,非0为真(正确),结果为1:0即为假(错误),结果为0 一.逻 ...
- javaScript 双感叹号用法
在偶尔看源码的过程中. 看到有些判断的用法是: var a; if(!!a){console.log('打印')} 为什么要用两个感叹号(❕)呢? 因为js 是弱类型,单纯用一个! 感叹号去转义可能会 ...
最新文章
- android webview详情,Android中的WebView详细介绍
- 《研磨设计模式》chap20 享元模式 Flyweight (1)前奏介绍
- 1096 Consecutive Factors (20 分)【难度: 一般 / 爆搜 数论】
- Geography爱好者 QGIS WGS84转其它坐标系并计算坐标
- python脚本变成exe_Python脚本转exe文件
- bootstraptable控制分页_bootstrap-table后端分页功能完整实例
- 一个技术管理者的苦逼【技术管理漫谈】
- 计算机组成原理期末复习往年卷子
- Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
- scrapy splash 爬取图片学习心得
- php滑动轮播效果,js实现移动端手指滑动轮播图效果
- 【写给以前的自己】python中,既生list何生tuple?简论学习数据结构(e.g.哈希化)对自己的提升
- machine learning (7)---normal equation相对于gradient descent而言求解linear regression问题的另一种方式...
- git提交代码的两种方法步骤
- 建模与仿真matlab论文,基于matlab风力发电系统的建模与仿真毕业设计论文
- 弘辽科技:拼多多直通车测款是怎样操作的
- flutter之出现 List is not a subtype of type 问题
- JAVA前端————HTML—W3C—基本标签—超链接锚链接
- 爱了!阿里P9开源分享内部Java核心开发手册(2022版)覆盖P5到P8
- 室内定位技术研发简介
热门文章
- 计算机科学与技术部分图书书评
- 2022人工智能数学基础1-2(许志钦
- 手工爱好者统一关注的国外优秀手工DIY网站
- tpg色卡查询_TPG色卡新增色-210色
- 网页中无法使用摄像头的解决办法
- c语言输出 inf是什么意思,cuffdiff 输出文件中的inf和nan的意思
- [ STK ](五)使用 Matlab,实现 STK 动画场景控制
- 多媒体文件播放器汇总
- android源码环境下编译fourthling.cling库的依赖问题
- 2019-12-14 爬网页10-多进程下载漫画网站图片(requests+lxml+fake_useragent+multiprocessing)