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.
}

以获得在与零比较之前完成按位与的预期含义。

4

1 回答 1

6
  1. It is historical from C
  2. Consider using functions in your if statement

e.g.

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

With the precedence of == being higher that & ensures that both functions are called.

于 2012-06-07T13:19:06.797 回答