Дополнительные круглые скобки в C: помимо приоритета операторов
В C круглые скобки используются не только для влияния на приоритет операторов, но и для различных других целей . Понимание этих дополнительных контекстов имеет решающее значение для предотвращения неожиданного поведения.
Контексты, в которых круглые скобки меняют значение:
Предотвращение поиска имени в зависимости от аргумента :
Кробки могут препятствовать поиску имени в зависимости от аргумента при вызове функций. Например, (fun)(arg) предотвращает преобразование fun в функцию в области вызова, в отличие от fun(arg).
Включение оператора запятой в контекстах списка:
Внутри списков (например, аргументов функции, списков инициализаторов) круглые скобки позволяют использовать оператор запятой. Например, a, (b, c), d ведут себя иначе, чем a, b, c, d, поскольку в круглых скобках применяется оператор запятая.
Устранение неоднозначности Неприятные анализы:
Кробки могут устранить неоднозначность сложного синтаксиса, такого как «Самый неприятный анализ». Без круглых скобок конструкции, напоминающие как объявления, так и вызовы функций, могут интерпретироваться как объявления. и decltype((e)) дают разные результаты. Первое обычно обозначает ссылку rvalue, а второе часто соответствует ссылке lvalue. Круглые скобки контролируют это поведение.
Предотвращение ошибок макросов препроцессора:
Кробки могут решить проблемы, связанные с использованием макросов. Они предотвращают нежелательный приоритет операторов и включают запятые в аргументах макроса путем разделения списка параметров.
Рекомендации по использованию:
Хотя дополнительные круглые скобки обычно не используются Чтобы не навредить коду, важно использовать их разумно. Избегайте ненужной вложенности и рассмотрите возможность использования альтернативных методов, таких как современный синтаксис C 11, если это применимо.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3