C+代碼中的雙重否定我剛進入一個擁有相當龐大的代碼庫的項目。我主要是處理C+,他們編寫的許多代碼都使用雙否定的布爾邏輯。 if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}我知道這些人都是聰明的程序員,很明顯他們這么做不是偶然的。我不是經驗豐富的C+專家,我唯一的猜測是,他們這么做的原因是,他們想要絕對肯定被評估的值是實際的布爾表示。因此,他們否定它,然后再否定它,使它回到它的實際布爾值。這是對的,還是我遺漏了什么?
3 回答

手掌心
TA貢獻1942條經驗 獲得超3個贊
#define likely(cond) (__builtin_expect(!!(cond), 1))#define unlikely(cond) (__builtin_expect(!!(cond), 0))
__builtin_expect
long
bool
cond
!!
- 3 回答
- 0 關注
- 487 瀏覽
添加回答
舉報
0/150
提交
取消