c++ - == 比按位 AND、XOR 和 OR 具有更高优先级的理由是什么?

标签 c++ c bitwise-operators operator-precedence comparison-operators

<分区>

在 C++ 中,== 和 != 的优先级高于按位 AND、XOR 和 OR 的基本原理是什么?

在我看来,operator==operator!= 放在 operator& 之后更自然,operator^运算符|。我想了解动机,以便更好地记住顺序。

例如,我认为以下类型的用法很常见:

if (bitFields & value == 0) { // Incorrect test.
  // Do Something.
}

既然 == 结果不是 1 就是 0,为什么要用它来进行按位运算呢?相反,上面必须写成:

if ((bitFields & value) == 0) { // Correct test.
  // Do Something.
}

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

最佳答案

  1. 历史来自C
  2. 考虑在 if 语句中使用函数

例如

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

== 的优先级高于 & 确保两个函数都被调用。

关于c++ - == 比按位 AND、XOR 和 OR 具有更高优先级的理由是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10932558/

相关文章:

c++ - 动态初始化

c++ - 从 win32 应用程序运行外部 exe

c++ - 用 C++ #define 替换对变量的所有引用

c - 当所有元素都被覆盖时,我的链表数组实现有什么问题?

java - Java中的无符号右移

c++ - 在 C++ 中为具有默认参数的类查找模板的大小

c - 为什么我们不能将结构对象作为结构内部的数据成员?

c - 无法使用C读取文件

整数上的 Java 按位 "&"

java - 存储用户输入的按位运算符的数据类型是什么