最佳答案
我刚刚加入了一个项目,代码库非常庞大。
我主要处理的是 C + + ,他们编写的很多代码都使用了双重否定来表示布尔逻辑。
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
我知道这些家伙是聪明的程序员,很明显他们这么做不是偶然的。
我不是经验丰富的 C + + 专家,我对他们为什么这样做的唯一猜测是,他们想让被评估的值绝对肯定是实际的布尔表示。所以他们先去掉它,然后再去掉它,得到它的实际布尔值。
是这样吗,还是我遗漏了什么?