Каково обоснование того, что == имеет более высокий приоритет, чем побитовые 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 ответ
Решение
- Это исторический от C
- Рассмотрите возможность использования функций в вашем
if
заявление
например
if (func1() == 2 & func2() == 3)
С приоритетом ==
быть выше, чем &
обеспечивает вызов обеих функций.