【发布时间】:2013-01-23 00:04:30
【问题描述】:
我遇到过以下sn-p:
pt->aa[!!(ts->flags & MASK)] = -val;
-
!!(双感叹号/感叹号/两个 NOT 运算符)在 c 中代表什么? - 不是
(!!NULL) == NULL吗?
【问题讨论】:
-
示例:在我的代码“Decimal to Binary: Size independent: First Method”中,我使用
!!将int转换为0或1位 -
另外请注意这段代码是错误的。问题 1:使用 bool 作为数组索引。问题2:奇怪!语法,只会让读者感到困惑(正如我们从这个问题中可以看出的那样)。问题3:用一个不必要的复杂表达式计算数组索引,它应该已经移动到自己的一行。所有这些都指向同一件事:我怀疑我们有一个程序员认为他们非常聪明,但实际上在正确的程序设计和代码维护方面需要学习很多东西。
-
说到可能的重复提名,请记住C和C++是两种不同的语言。因此,我认为有两个独立的问题和独立的答案是合理的。即使今天的语义相似,未来的标准也可能会改变这种状态。
-
Jan 是正确的,链接副本的答案对于 C 是不正确的。
标签: c gcc boolean boolean-expression