正在使用’!!’ 在C / C ++中的良好实践并且它很常见吗?
可能重复:
C ++代码中的双重否定
据我所知,没有C / C ++书籍教程或手册提到这种技术。 也许是因为它只是一个小小的东西,不值得一提。
我使用它是因为C / C ++将bool类型与int,long,pointer,double等混合在一起。 需要将非bool转换为bool是很常见的。 使用(bool)值来做这件事是不安全的,所以我用!!
去做吧。
例:
bool bValue = !!otherValue;
我想!!
与其他一些选择相比,这是非常明确的,例如:
if (foo) bar = 1; else bar = 0;
还是bar = foo ? 1 : 0;
bar = foo ? 1 : 0;
从!!
做了一件事,我发现它非常明确。
没关系,任何C或C ++程序员都应该认识它,但我更喜欢更明确的东西
(x != 0)
在这个确切的情况下:
bool bValue = !!otherValue;
你不需要写!!
。 没有它们它会正常工作:
bool bValue = otherValue;
我认为在大多数情况下隐式转换会很好。