10

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が実行される意図された意味を取得します。

4

1 に答える 1

6
  1. Cから歴史的です
  2. ifステートメントで関数を使用することを検討してください

例えば

if (func1() == 2 & func2() == 3)

==高い優先順位で&、両方の関数が確実に呼び出されるようにします。

于 2012-06-07T13:19:06.797 に答える