根據PC - 皮棉,下面的語句將永遠TRUE
:此C/C++ if()語句是否可以計算爲TRUE?
if((variable & 0x02) == 1)
我使用的用於嵌入式系統的C編譯器,評估它TRUE
每當variable
相應的位設置。我猜編譯器正在做==
兩邊的比較,而不是比較結果的數字。換句話說,每當表達式(varable & 0x02)
不是零(即TRUE
)時,該語句也將是TRUE
,因爲值1 is also TRUE
(非零)。
我不知道C/C++
標準是否明確定義了編譯器在這種情況下的行爲。是否有任何C/C++
專家可以根據標準(如C90, C99,
等)的說法回答此問題?
P.S .:在上面的語句中,「variable」是一個無符號的字符。
什麼是'variable'的類型? –
你能否給這個編譯器命名?我的一個朋友收集了一些奇怪的編譯器錯誤。 – blaze
您的真實代碼是否有雙重&符號(例如「var && 0x02」)?這將解釋編譯器將其評估爲真實。 – tinman