最近一直在居家办公,原本对居家办公还心存一丝幻想,想着把一天的工作提前做完,就可以留给自己更多的空间。
然而,当真正居家办公,才体会到其中的心塞与无奈,客户、售后电话的轮番轰炸、同事经常找不到人......等诸多问题,可把我给整麻了
进入正片:1
!!操作
看到交流群里有朋友抛出一段C语言操作:
offset=len/64+!!(len%64);
这两个连续的感叹号把有些人给整蒙圈了,还有些朋友调侃道: !!表示语气加重,事情非常紧急得尽快处理,可把我给整笑了。其实都是常规操作吧,只是这样的写法在正常的编码过程中并不多见。首先这两个!!并不是什么C语言新的关键字,而是!运算符的嵌套作用。!在C语言中叫逻辑非运算符,是一种条件运算符。语法形式:!(条件)
其中的条件如果是false,则最终整个表达式为true;反之则为false,bug菌提醒一句:要与~进行区分,~是按位取反,很多初学者容易混淆。语法形式:!!(条件)
所以如上表达式就是两个!的嵌套形式。当然如果你想项目代码中变得无可替代,可以继续如下操作:
语法形式:!!!......!!(条件)
前提是你要自己能看懂。那么回到!!,该操作所达到的效果便是条件逻辑与最终表达式的逻辑结果保持一致:!!(false)==false !!(非false)==true
而对于大部分编译器false对应的是0,而true对应的是1,所以很多同志拿着逻辑结果参与数值运算。offset=len/64+!!(len%64);
该表达式的用处也非常清楚了,当len不能被64整除,则:offset=len/64+1;
获得正确的数据分组个数,这代码应该是来源于存储或者通信中。但bug菌觉得,尽量还是不要操作:逻辑和数值运算最好是分开,以增加代码的可读性和可移植性。2
还有个用处
最早看到这种处理方式是在判断一个引脚的高底电平上:
u8GPIOLevel= !!(GPIOA_Data & PIN_2);
!!在其中的作用跟之前是一样的,使得表达式的数据结果与条件中的逻辑保持一致,便可以直接获得结果。END 审核编辑 :李倩-
C语言
+关注
关注
183文章
7642浏览量
144644 -
代码
+关注
关注
30文章
4942浏览量
73160
原文标题:C代码中看到"!!",捻了把汗~
文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)
FX2 I2C代码挂起的原因?
当CY7C65215在两个通道上配置为 SPI 和 I2C 时,能否在Linux系统中看到两个设备?
fx3 uvc uart组合代码在usb 2.0中不起作用怎么解决?
如何为micropython添加自己的C代码库?
STM32CubeMX用于STM32配置和初始化C代码生成
源代码加密、源代码防泄漏c/c++与git服务器开发环境
分析C语言代码结构的设计问题
EE-147:调整TigerSHARC DSP编译器的C源代码
EE-134:为SHARC系列编写C兼容汇编代码中断处理程序
EE-132:使用VisualDSP将C代码和数据模块放入SHARC存储器中

C代码中看到连续“!!”
评论