2011-10-02 66 views
1

我不知道。只是在我的調試窗口中看到一個BOOLEANSTORAGE_DEVICE_DESCRIPTOR被解析爲2而不是1.我感到恐慌思維2意味着錯誤。然後我意識到它是真實的。但爲什麼這種奇怪的設計?或者我在我身邊做錯了什麼?從來沒有聽說過任何像多字節布爾值。 (順便說一下,我正在使用MinGW和Qt Creator IDE的調試器)爲什麼winapi的BOOL使用1爲真,2爲假?

+0

有一個tribool或三態布爾(TRUE;,'FALSE'的一個相當廣泛的概念, 'undefined')。雖然這不是發生在這裏的事情(或者至少,我懷疑它),但我認爲我會提及它作爲對你最後聲明的迴應。 –

+0

是的,我想稱這是一個Trillian,但它似乎並沒有趕上。 – GolezTrol

+0

'undefined'對於像Boolean這樣的原子非指針類型有多有意義? –

回答

0

爲什麼存在多種類型的布爾值存在的歷史原因是here。基本上任何非零值都是真的,零是假的。這意味着你不應該做的比較像這樣:

if(x == TRUE) 

但是相反:

if(x)