2013-03-12 51 views
4

當我嘗試下面的代碼:和C預處理位運算符

#if 11 & 10 == 10 
#endif 

表達的評價是真實的,但是當我更改爲以下內容:

#if 10 & 10 == 10 
#endif 

評估返回false,而根據&運算符的定義,它應該仍然返回true(當我嘗試使用預處理器時,這是正確的)。 一般來說,無論我嘗試哪個在第一個操作數中有0,都會返回false,忽略結果。

有誰知道問題是什麼?

回答

5

==的優先級高於&

if 11 & 10 == 10評估爲if 11 & 1計算結果爲if 1

if 10 & 10 == 10評估爲if 10 & 1計算結果爲if 0