Punctuation
From cppreference.net
Это знаки пунктуации в C. Значение каждого символа подробно описано на связанных страницах.
Содержание |
{
}
- В struct или union определении разделяет struct-declaration-list .
- В enum определении разделяет список перечислителей.
- Разделяет составной оператор . Составной оператор может быть частью определения функции .
- При инициализации разделяет инициализаторы.
[
]
- Оператор индексации .
- Часть декларатора массива в объявлении или спецификаторе типа .
- В инициализации , вводит дескриптор для элемента массива. (начиная с C99)
- В спецификаторе атрибутов , разделяет атрибуты. (начиная с C23)
#
##
- Оператор препроцессора для склейки токенов .
(
)
- В выражении указывает группировку .
- Оператор вызова функции .
-
В выражении
sizeof,_Alignof(начиная с C11) ,typeofилиtypeof_unqual(начиная с C23) разделяет операнд. - В явном приведении типа разделяет идентификатор типа.
- В составном литерале разделяет идентификатор типа. (начиная с C99)
- В объявлении или идентификаторе типа указывает группировку.
- В деклараторе функции (в объявлении или идентификаторе типа ) разделяет список параметров.
-
В операторах
if,switch,while,do-whileилиforразделяет управляющую конструкцию. - В определении макроса, подобного функции разделяет параметры макроса.
- В вызове макроса, подобного функции разделяет аргументы макроса или предотвращает интерпретацию запятых как разделителей аргументов.
-
Является частью препроцессорного оператора
defined,__has_include,__has_embedили__has_c_attribute(начиная с C23) . - Является частью выражения выбора по типу . (начиная с C11)
-
В спецификаторе типа
_Atomicразделяет идентификатор типа. (начиная с C11) - В объявлении статического утверждения разделяет операнды. (начиная с C11)
-
В спецификаторе
_Alignasразделяет операнд. (начиная с C11) - В атрибуте разделяет аргументы атрибута. (начиная с C23)
- В имени типа битово-точного целого числа ( _BitInt ( N ) ) разделяет размер. (начиная с C23)
- Является частью замены __VA_OPT__ в определении вариативного макроса. (начиная с C23)
- В параметре препроцессора, используемом в директивах #embed и препроцессорных выражениях __has_embed , разделяет конструкцию параметра препроцессора. (начиная с C23)
;
- Указать конец
-
- оператор statement (включая init-statement оператора for)
- объявление declaration или struct-declaration-list
- Разделите второе и третье условия оператора for .
:
- Часть условного оператора .
- Часть объявления метки .
- В объявлении битового поля задаёт ширину.
- Вводит базовый тип перечисления , который определяет основной тип перечисления. (начиная с C23)
- В обобщённой ассоциации разделяет идентификатор типа или default и выбранное выражение. (начиная с C11)
...
- В списке параметров объявления функции, обозначает функцию с переменным числом аргументов .
- В определении макроса , обозначает вариативный макрос. (начиная с C99)
?
- Часть условного оператора .
::
- В атрибуте , указывает область действия атрибута. (начиная с C23)
- В препроцессорном префиксном параметре (используется #embed и __has_embed ), указывает область действия. (начиная с C23)
.
- Оператор доступа к члену .
- В инициализации , вводит идентификатор для члена структуры/объединения. (начиная с C99)
->
~
!
+
-
*
- Оператор косвенного обращения .
- Оператор умножения .
- Оператор указателя в деклараторе или в спецификаторе типа .
- Заполнитель для длины декларатора массива переменной длины в объявлении функции . (начиная с C99)
/
%
^
&
|
=
- Простой оператор присваивания .
- В инициализации , разделяет объект и список инициализаторов.
- В определении перечисления , вводит значение константы перечисления.
+=
-=
*=
/=
%=
^=
&=
|=
==
!=
<
- Оператор меньше .
- Вводит имя заголовка в
-
- директива #include
- препроцессорное выражение __has_include (начиная с C23)
- директива #embed (начиная с C23)
- препроцессорное выражение __has_embed (начиная с C23)
-
определяемые реализацией местоположения в
#pragmaдирективе
>
- Оператор "больше" .
- Обозначает конец имени заголовка в
-
- директива #include
- препроцессорное выражение __has_include (начиная с C23)
- директива #embed (начиная с C23)
- препроцессорное выражение __has_embed (начиная с C23)
-
определяемые реализацией местоположения в
#pragmaдирективе
<=
>=
&&
||
<<
>>
<<=
>>=
++
--
,
- Оператор запятая .
- Разделитель списка в
-
- список деклараторов в объявлении
- список инициализаторов в инициализации , включая составные литералы (начиная с C99)
- список аргументов в выражении вызова функции
- список перечислителей в объявлении enum
- список параметров функции
- список параметров макроса в определении функционального макроса
- список аргументов макроса в вызове функционального макроса , если не находится между внутренними скобками
- список обобщённых ассоциаций в выражении обобщённого выбора (начиная с C11)
- список атрибутов (начиная с C23)
- В объявлении static_assert , разделяет аргументы. (начиная с C11)
- В выражении generic selection , разделяет управляющее выражение и список generic ассоциаций. (начиная с C11)
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 6.4.6 Пунктуаторы (стр: 68-69)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 6.4.6 Пунктуаторы (стр: 52-53)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 6.4.6 Пунктуаторы (стр: 72-73)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 6.4.6 Пунктуаторы (стр: 63-64)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 3.1.6 Пунктуаторы
Смотрите также
| Альтернативные представления (C95) | альтернативные написания для некоторых операторов |
|
C++ documentation
для
Пунктуация
|
|