我刚参加了一个非常庞大的项目。
我主要处理C++,他们写的很多代码在布尔逻辑中使用双重否定。
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
我知道这些家伙是聪明的程序员,很明显他们不是无意中这样做的。
我并不是经验丰富的C++专家,我唯一猜测他们这样做的原因是希望确认正在评估的值为实际的布尔表示。所以他们对它取反,然后再次取反以使其返回其实际的布尔值。
这个理解正确吗,还是我漏掉了什么?