C ++では、ビット単位のAND、XOR、およびORよりも優先順位が高い==および!=の理由は何ですか?
、、、operator==
およびの後にoperator!=
来る方が自然に思えます。注文を覚えやすくするために、動機を理解したいと思います。operator&
operator^
operator|
たとえば、次のような使用法が一般的だと思います。
if (bitFields & value == 0) { // Incorrect test.
// Do Something.
}
==の結果は1または0のいずれかなので、なぜビット単位の演算に使用したいのでしょうか。代わりに、上記は次のように記述する必要があります。
if ((bitFields & value) == 0) { // Correct test.
// Do Something.
}
ゼロとの比較の前にビット単位のANDが実行される意図された意味を取得します。