可能重复:
C++ 代码中的双重否定
据我所知,没有 C/C++ 书籍教程或手册提到这种技术。可能因为只是一件小事,不值一提。
我使用它是因为 C/C++ 将 bool 类型与 int、long、pointer、double 等...混合在一起。需要将非布尔值转换为布尔值是很常见的。使用 (bool)value 这样做是不安全的,所以我习惯!!
这样做。
例子:
bool bValue = !!otherValue;
可能重复:
C++ 代码中的双重否定
据我所知,没有 C/C++ 书籍教程或手册提到这种技术。可能因为只是一件小事,不值一提。
我使用它是因为 C/C++ 将 bool 类型与 int、long、pointer、double 等...混合在一起。需要将非布尔值转换为布尔值是很常见的。使用 (bool)value 这样做是不安全的,所以我习惯!!
这样做。
例子:
bool bValue = !!otherValue;
很好,任何 C 或 C++ 程序员都应该识别它,但我更喜欢更明确的东西
(x != 0)
我认为!!
与其他一些选择相比非常清楚,例如:
if (foo)
bar = 1;
else
bar = 0;
或者bar = foo ? 1 : 0;
由于!!
只做一件事,我觉得它非常明确。
在这种确切的情况下:
bool bValue = !!otherValue;
你不需要写!!
。没有它们它会正常工作:
bool bValue = otherValue;
我认为在大多数情况下隐式转换会很好。