这些是 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 起) |
|
|
(C++11 起) |
|
|
(C++17 起) |
- 在模块声明或模块分区导入声明中,引入模块分区名称。
- 私有模块片段引入器 (module :private;) 的一部分。
|
(C++20 起) |
[编辑] ~ (包括 compl)
[编辑] ! (包括 not)
[编辑] ^ (包括 xor)
[编辑] & (包括 bitand)
[编辑] | (包括 bitor)
-
- 在模板特化声明中,作为 template<> 的一部分。
- 在以下内容中引入头文件名称
-
-
- 在模板特化声明中,作为 template<> 的一部分。
- 表示头文件名的结束
-
-
-
|
(C++11 起) |
-
|
(C++17 起) |
-
|
(C++23 起) |
-
[编辑] 多字符运算符和标点符号
[编辑] ...
- 在函数声明符或 lambda 表达式(C++11 起)或用户定义推导指南(C++17 起)的参数列表中,表示变参函数。
- 在处理程序中,表示 catch-all 处理程序。
[编辑] ::
-
[编辑] .*
[编辑] ->
|
|
(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]
[编辑] 另请参阅