Почему в C++ приоритет сравнения выше, чем побитовых логичеких операций?

Например, x & 8 != 0 равносильно x & (8 != 0), а не (x & 8) != 0. В паскале другой порядок приоритетов. Хотя там есть свои неудобства из-за того, что нет отдельных побитовых операций.
Чем был обусловлен выбор такого порядка приоритетов? Может, так легче сравнивать какие-то битовые маски или что?
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему в C++ приоритет сравнения выше, чем побитовых логичеких операций?
Например, x & 8 != 0 равносильно x & (8 != 0), а не (x & 8) != 0.

Это наследие C, в ранних версиях которого не было операций && и ||, а сложные условия реализовывались битовыми операциями.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
maaGames
@maaGames
Погроммирую программы
if( A != 0 && B != 0 )

if( A & B != 0 )

Если бы в двух этих примерах приоритет && и & отличался, то ошибок было бы в 100 раз больше, чем сейчас.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы