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

手掌心
TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
#define likely(cond) (__builtin_expect(!!(cond), 1))#define unlikely(cond) (__builtin_expect(!!(cond), 0))
__builtin_expect
long
bool
cond
!!
- 3 回答
- 0 關(guān)注
- 488 瀏覽
添加回答
舉報(bào)
0/150
提交
取消