正在使用'!!' 在C/C++中的良好实践并且它很常见吗?

Rob*_*b L 8 c c++

可能重复:
C++代码中的双重否定

据我所知,没有C/C++书籍教程或手册提到这种技术.也许是因为它只是一个小小的东西,不值得一提.

我使用它是因为C/C++将bool类型与int,long,pointer,double等混合在一起.需要将非bool转换为bool是很常见的.使用(bool)值来做这件事是不安全的,所以我习惯!!这样做.

例:

bool bValue = !!otherValue;
Run Code Online (Sandbox Code Playgroud)

Ed *_* S. 19

没关系,任何C或C++程序员都应该认识它,但我更喜欢更明确的东西

(x != 0)
Run Code Online (Sandbox Code Playgroud)

  • +1更清晰的代码是更好的代码 (2认同)

sar*_*old 10

我认为!!与其他一些选择相比非常清楚,例如:

if (foo)
  bar = 1;
else
  bar = 0;
Run Code Online (Sandbox Code Playgroud)

要么 bar = foo ? 1 : 0;

既然!!只做了一件事,我发现它非常明确.

  • 好吧,我同意这没关系,但是`!! foo`比`foo更少*模糊不清?1:0`?我不能同意这一点. (5认同)
  • 有些人还认为` - >`是自己的运算符... ;-) (3认同)

Pav*_*hov 5

在这个确切的情况下:

bool bValue = !!otherValue;
Run Code Online (Sandbox Code Playgroud)

你不需要写!!.没有它们它会正常工作:

bool bValue = otherValue;
Run Code Online (Sandbox Code Playgroud)

我认为在大多数情况下隐式转换会很好.