这些是 C++ 中的标点符号。每个符号的含义在链接的页面中详述。
预处理运算符
预处理器会识别预处理运算符。
#(包括 %:)
##(包括 %:%:)
单字符运算符和标点符号
{ 和 }(包括 <% 和 %>)
-
[ and ](包括 <: 和 :>)
|
(C++11 起) |
|
(C++17 起) |
|
(C++26 起) |
( 和 )
-
-
-
|
(C++11 起) |
-
|
(C++17 起) |
-
|
(C++20 起) |
-
- 在处理块中分隔形参声明。
- 在仿函数宏定义中分隔宏形参。
- 在仿函数宏调用中分隔宏实参,或者防止逗号被视为实参分隔符。
-
defined
、__has_include
(C++17 起)、__has_cpp_attribute
(C++20 起) 预处理运算符的一部分。
-
|
(C++11 起) |
|
(C++14 起) |
|
(C++17 起) |
|
(C++20 起) |
;
-
- 模块声明、导入声明、全局模块片段器引入或私有模块片段引入器
- 要求
|
(C++20 起) |
:
|
(C++11 起) |
- 在属性说明符中分隔属性 using 前缀与属性列表。
|
(C++17 起) |
- 在模块声明或模块划分的导入声明中引入模块划分名。
- 私有模块片段引入器(module :private;)的一部分。
|
(C++20 起) |
?
.
~(包括 compl)
!(包括 not)
+
-
*
/
%
^(包括 xor)
&(包括 bitand)
|(包括 bitor)
=
<
-
- 模板特化声明中 template<> 的一部分。
- 指示下列构造中的头文件名:
-
>
-
- 模板特化声明中 template<> 的一部分。
- 指示下列构造中头文件名的末尾:
-
,
-
-
|
(C++11 起) |
-
|
(C++17 起) |
-
|
(C++23 起) |
-
多字符运算符和标点符号
...
- 函数声明符或 lambda 表达式 (C++11 起)或用户定义推导指引 (C++17 起)中形参列表的一部分,标识变参数函数。
- 在处理块中标识全捕获。
::
-
.*
->
|
(C++11 起) |
|
(C++17 起) |
|
(C++20 起) |
->*
+=
-=
*=
/=
%=
^=(包括 xor_eq)
&=(包括 and_eq)
|=(包括 or_eq)
==
!=(包括 not_eq)
<=
>=
&&(包括 and)
||(包括 or)
<<
>>
<<=
>>=
++
--
引用
- C++23 标准(ISO/IEC 14882:2024):
- 5.12 Operators and punctuators [lex.operators]
- C++20 标准(ISO/IEC 14882:2020):
- 5.12 Operators and punctuators [lex.operators]
- C++17 标准(ISO/IEC 14882:2017):
- 5.12 Operators and punctuators [lex.operators]
- C++14 标准(ISO/IEC 14882:2014):
- 2.13 Operators and punctuators [lex.operators]
- C++11 标准(ISO/IEC 14882:2011):
- 2.13 Operators and punctuators [lex.operators]
- C++03 标准(ISO/IEC 14882:2003):
- 2.12 Operators and punctuators [lex.operators]
- C++98 标准(ISO/IEC 14882:1998):
- 2.12 Operators and punctuators [lex.operators]
参阅