1.4 标点符号与运算符
2024年6月21日大约 3 分钟
C++ 中存在许多标点符号,例如 ;、,、{、}、(、)、[、]、.、等等。这些标点符号在程序中有着特殊的作用。它们用于分隔程序的不同部分、表示程序的结构。
需要注意的是,C++ 中存在由多个字符组成的标点符号,例如 <<、>>、::、-> 等等。这些标点符号由多个字符组成一个整体,中间是不能分隔开的。
预处理操作符
预处理操作符是#和##。
括号
括号用于表示程序的结构。括号都一定是成对存在的。
在 C++ 中,有三种括号标点符号:
(和){和}[和]
分隔与说明符号
C++ 标准中并没有分隔符号和说明符号这样的分类,这一节分出来是为了帮助读者理解。这些符号往往不表示程序的操作,而是用于分隔程序的不同部分,或者用于说明程序的结构。
;分号,逗号:冒号::两个冒号(作用域解析操作符)...三个英文句号(包展开)
运算符号
C++ 标准中并没有运算符号这样的分类,这一节分出来是为了帮助读者理解。运算符号常常用来表示程序中的运算操作。
单个字符的运算符号有:
?问号.点号~波浪号(按位取反)!感叹号(逻辑非)+加号-减号*乘号/除号%百分号(取模)^尖角号(异或)&et连写符(与)|竖线(或)=等号<小于号>大于号
多个字符的运算符号有:
.*点号和星号->箭头->*箭头和星号+=加等号-=减等号*=乘等号/=除等号%=取模等号^=异或等号&=与等号|=或等号==等于号!=不等于号<=小于等于号>=大于等于号<=>飞船/三向比较运算符&&逻辑与||逻辑或<<左移>>右移<<=左移等号>>=右移等号++自增--自减
尖括号
除了上面描述的三种括号,C++ 中还有尖括号<和>。它们实际上就是小于号和大于号,但是在某些情况下,它们会被解释成括号。
类似的,作为括号的<、>必须成对出现,不能单独出现。
举例而言,在下面的代码中
std::vector<std::optional<my_data>> v;这里存在的就是两对尖括号。而不是两个小于号和一个右移号。
是括号还是小于号、大于号
如何判断<、>是尖括号还是小于号、大于号,是与上下文相关的。在这里的std::vector和std::optional的定义决定了跟在后面的<和>是尖括号。
代用符号
由于一些历史原因(有的键盘上会缺少一些符号),C++ 中存在一些代用符号。这包括如下:
%:代替#%:%:代替##<:代替[:>代替]<%代替{%>代替}and代替&&or代替||xor代替^not代替!bitand代替&bitor代替|compl代替~and_eq代替&=or_eq代替|=xor_eq代替^=not_eq代替!=
需要注意,这些代用符号里面有一些看起来很像是标识符。但它们是代用符号,会被处理成标点符号,不能用作标识符。同样的,代用符号也是由多个字符组成的标点符号,中间是不能分隔开的。