次のコードを試すと:
#if 11 & 10 == 10
#endif
式の評価はtrueですが、それを次のように変更すると:
#if 10 & 10 == 10
#endif
評価は false を返しますが、 & 演算子の定義に基づいて true を返す必要があります (正しいプリプロセッサを試しているとき)。一般に、最初のオペランドに 0 が含まれているものは何でも、結果が何であるかを無視して false を返します。
誰が問題が何であるか知っていますか?
次のコードを試すと:
#if 11 & 10 == 10
#endif
式の評価はtrueですが、それを次のように変更すると:
#if 10 & 10 == 10
#endif
評価は false を返しますが、 & 演算子の定義に基づいて true を返す必要があります (正しいプリプロセッサを試しているとき)。一般に、最初のオペランドに 0 が含まれているものは何でも、結果が何であるかを無視して false を返します。
誰が問題が何であるか知っていますか?
==
は の前に評価されるため、操作の順序が原因のよう&
です。括弧は私のために働いた:
#if (10 & 10) == 10
==
よりも優先順位が高い&
if 11 & 10 == 10
評価するためにif 11 & 1
評価するif 1
if 10 & 10 == 10
評価するためにif 10 & 1
評価するif 0