【发布时间】:2010-09-19 21:45:42
【问题描述】:
我刚刚加入了一个代码库非常庞大的项目。
我主要处理 C++ 并且他们编写的许多代码都使用双重否定作为布尔逻辑。
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
我知道这些人是聪明的程序员,很明显他们这样做并不是偶然的。
我不是经验丰富的 C++ 专家,我对他们为什么这样做的唯一猜测是他们想要绝对肯定被评估的值是实际的布尔表示。所以他们否定它,然后再次否定它,让它回到它的实际布尔值。
这是正确的,还是我遗漏了什么?
【问题讨论】:
-
检查这里,已经问过了,Is !! a safe way to convert to bool in C++?
-
这个话题已经讨论过here。