C+代码中的双重否定我刚进入一个拥有相当庞大的代码库的项目。我主要是处理C+,他们编写的许多代码都使用双否定的布尔逻辑。 if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}我知道这些人都是聪明的程序员,很明显他们这么做不是偶然的。我不是经验丰富的C+专家,我唯一的猜测是,他们这么做的原因是,他们想要绝对肯定被评估的值是实际的布尔表示。因此,他们否定它,然后再否定它,使它回到它的实际布尔值。这是对的,还是我遗漏了什么?
3 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
#define likely(cond) (__builtin_expect(!!(cond), 1))#define unlikely(cond) (__builtin_expect(!!(cond), 0))
__builtin_expect
long
bool
cond
!!
- 3 回答
- 0 关注
- 440 浏览
添加回答
举报
0/150
提交
取消