对条件连续两次取反什么意思

发布于 2022-10-15 06:29:11 字数 111 浏览 32 评论 0

#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))

如题,为什么要连续取反啊,这样用有什么好处?谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

无声无音无过去 2022-10-22 06:29:11

将condition的值,转成0或1

等风来 2022-10-22 06:29:11

对于0值  连续两次取反还是0
对于非零值  连续两次取反还是非0值
那这个操作有什么意义?

幸福%小乖 2022-10-22 06:29:11

难道意思是对于不为0的值,经过两次取反得到1
就是这个作用么?
还是有什么其它的技巧,作用》

终难遇 2022-10-22 06:29:11

condition==0 不就ok了?

撞了怀 2022-10-22 06:29:11

还是非0值
phoxia 发表于 2011-05-20 12:01

对于非零值  连续两次取反是1

谢绝鈎搭 2022-10-22 06:29:11

2楼正解

一向肩并 2022-10-22 06:29:11

转换成 bool 值了。

iptables 中就有这样用的

我很OK 2022-10-22 06:29:11

回复 8# Godbach

    condition==0 不就ok了?
和这个应该效果一样吧,这样用有什么优点,好处呢?

水中月 2022-10-22 06:29:11

!!(condition)的结果只能是0和1,如果condition是0,结果当然是0, 如果condition小于0或大于零,其结果是1,这个宏会被分别翻译成 ((void)sizeof(char[1]))  或 ((void)sizeof(char[-1]))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文