2.3.3 字符常量
在 C++中,用单引号将其括起来的字符称为字符常量。如‘B’、‘b’、‘%’、‘ ’(表示一个空格)等都是合法的字符,但若只有一对单引号(‘’)则是不合法的,因为 C++不支持空字符常量。注意‘B’和‘b’是两个不同的字符。
除了上述形式的字符常量外,C++还可以用“\”开头的字符序列来表示特殊形式的字符。例如在以前程序中的‘\n’,它代表回车换行,即相当于按 Enter 键,而不是表示字母 n。这种将反斜杠(\)后面的字符转换成另外意义的方法称为转义序列表示法。‘\n’称为转义字符,“\”称为转义字符引导符,单独使用没有任何意义,因此若要表示反斜杠字符,则应为‘\\’。表2.2列出了常用的转义序列符。
表2.2 C++中常用转义序列符
例如,有下列语句:
cout<<"ab\tcd\n";
则先在第1行第1列输出a,第2列输出b,然后遇到‘\t’,它的作用相当于按了一次Tab键,即跳到下一个水平制表位置。由于一个制表等于 8列,因而下一个制表位置从第 9 列开始,所以在第9列输出c,第10列输出d。结果如图2.5所示。
图2.5 “ab\tcd\n”输出结果
需要说明的是:
(1)当转义字符引导符后接数字时,用来指定字符的ASCII码值。默认时,数字为八进制,此时数字可以是1位、2位或3位。若采用十六进制,则需在数字前面加上X或x,此时数字可以是 1 位或多位。例如:‘\101’和‘\x41’都表示字符‘A’。若为‘\0’,则表示 ASCII 码值为0的字符。
要注意,ANSI/ISO C++中由于允许出现多字节编码的字符,因此对于“\x”或“\X”后接的十六进制的数字位数已不再限制。
(2)不是每个以转义序列表示的字符都是有效的转义字符,当C++无法识别时,就会将该转义字符解释为原来的字符。例如:‘\A’和‘\N’等虽然都是合法的转义字符,但却都不能被C++识别,此时‘\A’当做‘A’,‘\N’当做‘N’。
(3)注意 0、‘0’和‘\0’的区别,0 表示整数,‘0’表示数字 0 字符,‘\0’表示ASCII码值为0的字符。