这些是 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 起) |
- 在属性说明符中分隔属性 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]
[编辑] 参阅