Каково обоснование того, что == имеет более высокий приоритет, чем побитовые AND, XOR и OR?

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

чтобы получить предполагаемое значение, где битовое И делается перед сравнением к нулю.

1 ответ

Решение
  1. Это исторический от C
  2. Рассмотрите возможность использования функций в вашем if заявление

например

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

С приоритетом == быть выше, чем & обеспечивает вызов обеих функций.

Другие вопросы по тегам