标点

来自cppreference.com
< cpp‎ | language


 
 
C++ 语言
 
 

这些是 C++ 中的标点符号。每个符号的含义在链接的页面中详述。

预处理运算符

预处理器会识别预处理运算符。

#(包括 %:

##(包括 %:%:

单字符运算符和标点符号

{}(包括 <%%>

(C++11 起)
(C++20 起)

[ and ](包括 <::>

(C++11 起)
(C++17 起)
(C++26 起)

()

(C++11 起)
(C++11 起)
(C++17 起)
(C++20 起)
(C++11 起)
  • 处理块中分隔形参声明。
  • 仿函数宏定义中分隔宏形参。
  • 仿函数宏调用中分隔宏实参,或者防止逗号被视为实参分隔符。
  • defined __has_include (C++17 起)__has_cpp_attribute (C++20 起) 预处理运算符的一部分。
  • static_assert 声明中分隔操作数。
  • 分隔以下说明符的操作数:
(C++20 起)
  • 属性中分隔属性实参。
(C++11 起)
(C++14 起)
(C++17 起)
  • 变参数宏定义中 __VA_OPT__ 替换的一部分。
(C++20 起)

;

  • 指示以下构造的末尾:
  • 模块声明、导入声明、全局模块片段器引入或私有模块片段引入器
  • 要求
(C++20 起)

:

(C++11 起)
(C++17 起)
(C++20 起)

?

.

(C++20 起)

~(包括 compl

!(包括 not

(C++23 起)

+

-

*

  • lambda 捕获列表中 *this 的一部分,以按复制捕获当前对象。
(C++17 起)

/

%

^(包括 xor

&(包括 bitand

(C++11 起)

|(包括 bitor

=

(C++11 起)
(C++20 起)

<

(C++20 起)
  • 模板特化声明template<> 的一部分。
  • 指示下列构造中的头文件名:
(C++17 起)
(C++20 起)

>

(C++20 起)
  • 模板特化声明template<> 的一部分。
  • 指示下列构造中头文件名的末尾:
(C++17 起)
(C++20 起)

,

(C++11 起)
(C++17 起)
(C++23 起)
(C++11 起)

多字符运算符和标点符号

...

  • 宏定义中标识变参数宏。
  • 指示声明与展开。
(C++11 起)
(C++26 起)

::

  • 下列构造中的作用域解析运算符:
  • 属性中指示属性作用域。
(C++11 起)
(C++17 起)

.*

->

(C++11 起)
(C++17 起)
(C++20 起)

->*

+=

-=

*=

/=

%=

^=(包括 xor_eq

&=(包括 and_eq

|=(包括 or_eq

==

!=(包括 not_eq

<=

>=

<=>

(C++20 起)

&&(包括 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]

参阅

代用表示 某些运算符的代用拼写