C+代码中的双重否定
我刚进入一个拥有相当庞大的代码库的项目。
我主要是处理C+,他们编写的许多代码都使用双否定的布尔逻辑。
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
我知道这些人都是聪明的程序员,很明显他们这么做不是偶然的。
我不是经验丰富的C+专家,我唯一的猜测是,他们这么做的原因是,他们想要绝对肯定被评估的值是实际的布尔表示。因此,他们否定它,然后再否定它,使它回到它的实际布尔值。
这是对的,还是我遗漏了什么?