对条件连续两次取反什么意思
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
如题,为什么要连续取反啊,这样用有什么好处?谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
如题,为什么要连续取反啊,这样用有什么好处?谢谢
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
将condition的值,转成0或1
对于0值 连续两次取反还是0
对于非零值 连续两次取反还是非0值
那这个操作有什么意义?
难道意思是对于不为0的值,经过两次取反得到1
就是这个作用么?
还是有什么其它的技巧,作用》
condition==0 不就ok了?
对于非零值 连续两次取反是1
2楼正解
转换成 bool 值了。
iptables 中就有这样用的
回复 8# Godbach
condition==0 不就ok了?
和这个应该效果一样吧,这样用有什么优点,好处呢?
!!(condition)的结果只能是0和1,如果condition是0,结果当然是0, 如果condition小于0或大于零,其结果是1,这个宏会被分别翻译成 ((void)sizeof(char[1])) 或 ((void)sizeof(char[-1]))