當我嘗試下面的代碼:和C預處理位運算符
#if 11 & 10 == 10
#endif
表達的評價是真實的,但是當我更改爲以下內容:
#if 10 & 10 == 10
#endif
評估返回false,而根據&運算符的定義,它應該仍然返回true(當我嘗試使用預處理器時,這是正確的)。 一般來說,無論我嘗試哪個在第一個操作數中有0,都會返回false,忽略結果。
有誰知道問題是什麼?
當我嘗試下面的代碼:和C預處理位運算符
#if 11 & 10 == 10
#endif
表達的評價是真實的,但是當我更改爲以下內容:
#if 10 & 10 == 10
#endif
評估返回false,而根據&運算符的定義,它應該仍然返回true(當我嘗試使用預處理器時,這是正確的)。 一般來說,無論我嘗試哪個在第一個操作數中有0,都會返回false,忽略結果。
有誰知道問題是什麼?
Order of operation似乎是罪魁禍首,因爲==
之前評估&
。括號內爲我工作:
#if (10 & 10) == 10
==
的優先級高於&
if 11 & 10 == 10
評估爲if 11 & 1
計算結果爲if 1
if 10 & 10 == 10
評估爲if 10 & 1
計算結果爲if 0