Приоритет! * ++ требует скобок?
Является ли выражение C:
!(*(++buffer))
То же самое, что и:
!*++buffer
?
3 ответа
Да, они по сути одинаковы. Здесь приоритет не входит в картину, потому что выражение однозначно.
почтительное отношение *
зависит от результата ++
и аргумент !
является результатом выражения *++buffer
, Поэтому любой другой заказ просто невозможен. (Если вы не верите, попробуйте поставить скобки (...)
таким образом, что результат выражения отличается)
Для удобства чтения вы можете поставить некоторые скобки, но это вопрос стиля, а не требования.
Если вам нужно спросить, используйте скобки.
Нет смысла беспокоиться и сбивать с толку более поздних программистов. Если вы не уверены, просто используйте круглые скобки - они бесплатны.
Скобки здесь не требуются.
Согласно таблице приоритетов операторов, ++
префиксный оператор, унарный косвенный оператор *
, и унарный логический оператор НЕ !
у всех одинаковый уровень приоритета, и они ассоциируются справа налево.
Кроме того, так как buffer
является единственным базовым выражением, содержащимся в большем выражении, для операторов не существует другого способа сопоставления.