这些是 C++ 中的标点符号。每个符号的含义在链接的页面中详细说明。
[编辑] 预处理运算符
预处理运算符由预处理器识别。
[编辑] #(包括 %:)
[编辑] ##(包括 %:%:)
[编辑] 单字符运算符和标点符号
[编辑] { 和 }(包括 <% 和 %>)
-
[编辑] [ 和 ](包括 <: 和 :>)
|
(自 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) |
- 分隔 for 语句的 condition 和 statement。
- 在范围基于 for 语句中,分隔 item-declaration 和 range-initializer。
- 在枚举声明的 enum-base 中,引入底层类型。
|
(自 C++11) |
- 在属性说明符中,分隔 attribute-namespace 和 attribute-list。
|
(自 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++26) |
[编辑] ::
-
[编辑] .*
[编辑] ->
|
(自 C++11) |
|
(自 C++17) |
|
(自 C++20) |
[编辑] ->*
[编辑] +=
[编辑] -=
[编辑] *=
[编辑] /=
[编辑] %=
[编辑] ^= (包括 xor_eq)
[编辑] &= (包括 and_eq)
[编辑] |= (包括 or_eq)
[编辑] ==
[编辑] != (包括 not_eq)
[编辑] <=
[编辑] >=
[编辑] && (包括 and)
[编辑] || (包括 or)
[编辑] <<
[编辑] >>
[编辑] <<=
[编辑] >>=
[编辑] ++
[编辑] --
[编辑] 参考文献
- C++23 标准 (ISO/IEC 14882:2024)
- 5.12 运算符和标点符号 [lex.operators]
- C++20 标准 (ISO/IEC 14882:2020)
- 5.12 运算符和标点符号 [lex.operators]
- C++17 标准 (ISO/IEC 14882:2017)
- 5.12 运算符和标点符号 [lex.operators]
- C++14 标准 (ISO/IEC 14882:2014)
- 2.13 运算符和标点符号 [lex.operators]
- C++11 标准 (ISO/IEC 14882:2011)
- 2.13 运算符和标点符号 [lex.operators]
- C++03 标准 (ISO/IEC 14882:2003)
- 2.12 运算符和标点符号 [lex.operators]
- C++98 标准 (ISO/IEC 14882:1998)
- 2.12 运算符和标点符号 [lex.operators]
[编辑] 参见