我刚刚进入一个拥有非常庞大的代码库的项目。
我主要处理 C++ 并且他们编写的许多代码都使用双重否定作为布尔逻辑。
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
我知道这些人是聪明的程序员,很明显他们这样做不是偶然的。
我不是经验丰富的 C++ 专家,我对他们为什么这样做的唯一猜测是他们想要绝对肯定被评估的值是实际的布尔表示。所以他们否定它,然后再次否定它以使其回到它的实际布尔值。
这是正确的,还是我错过了什么?
原文由 Brian Gianforcaro 发布,翻译遵循 CC BY-SA 4.0 许可协议
转换为布尔值是一个技巧。