Имя всей группы из четырех символов декларации С++?

Мое понимание состоит в том, что в общем случае целую группу не-буквенно-цифровых символов, таких как *,?,;, # и т.д., можно назвать пунктуаторами. Однако в выражении типа

    3*4

* специально известен как "оператор", тогда как в объявлении типа

    int *p;

* не является оператором, а просто указывает, что p является указателем. Аналогично, 3 дополнительных символа &, [] и() не называются операторами при использовании в объявлениях. Я знаю, что означают все эти символы в их различных контекстах, как они выражены и что они делают, но существует ли конкретное имя для всей группы из четырех символов при использовании в объявлениях? Я всегда называл их "атрибутами" из-за отсутствия чего-либо лучшего, и я не могу найти ничего конкретного в языковых стандартах относительно имени группы.

Ответ 1

Как вы уже знаете, символы типа *,?,;, # и т.д. называются Punctuator в C и С++.

Пунктуатор - это токен, который имеет синтаксический и смысловой смысл для компилятор , но точное значение зависит от контекста. A пунктуатор также может быть токеном, который используется в синтаксисе Препроцессор.

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

От C Стандарт # 6.4.6:

Прецитера является символом, который имеет независимое синтаксическое и семантическое значение. В зависимости от контекста он может указывать операцию, которая будет выполняться (которая, в свою очередь, может дать значение или обозначение функции, создать побочный эффект или некоторую комбинацию), и в этом случае он известен как оператор (другие формы оператора также существуют в некоторых контекстах). Операнд - это объект, на котором действует оператор.

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

Дополнительно: Большая часть пунктуатора распространена в C и С++. Но С++ имеет некоторые дополнительные символы, такие как ::, .*, new, delete и т.д.

Ответ 2

но существует ли конкретное имя для всей группы из четырех символов при использовании в объявлениях?

Сорт. Грамматическая конструкция, которая ссылается на эти символы в объявлениях, является "деклараторами". Однако это имя не используется за пределами стандартных обсуждений; там просто не нужно ссылаться на символы декларатора как на группу.

Кроме того, есть больше символов-деклараторов, чем это. В C существует () (для объявлений функций). С++ дает нам ... (объявления пакета параметров) и && (ссылка r-value).

Ответ 3

При использовании в объявлении инструкции эти 4 символа считаются модификаторами декларатора. Прецидент классификатора просто представляет, что их можно использовать в нескольких контекстах, поэтому они также считаются пунктуаторами. https://msdn.microsoft.com/en-us/library/aa267831(v=vs.60).aspx

При использовании в не декларативной усадьбе все 4 из этих символов (*, &, [],()) считаются операторами в С++. Существуют различные типы операторов, такие как арифметические операторы, реляционные операторы и логические операторы. Символ умножения относится к категории арифметических операторов, где, поскольку остальные 4 оператора принадлежат к разной/другой категории операторов. * называется оператором постулата. и называется адресом-оператора. [] называется индексом.() называется оператором вызова функции. Поскольку все они считаются операторами в С++, это означает, что вы можете переопределить их функциональность.

Это хорошая ссылка, которая демонстрирует приоритет оператора в С++: http://www.geeksforgeeks.org/operators-c-c/