2011-10-02 67 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)