转义字符到底是什么
Contents
转义字符到底是啥?
实不相瞒我就是因为不知道才写下这篇文章,不,准确的说是这篇笔记 orz,既然是笔记,无所谓抄不抄了。每次说到转义字符,多少有点模糊,所以不如记下这篇笔记,以后忘了直接翻出来看看,复习起来要快一些。
注:以下大段转载自 C 语言中文网,原文链接在参考中给出,如有侵权,请联系我删除。
什么是转义
字符集(Character Set)为每个字符分配了唯一的编号,我们不妨将它称为编码值。在 C 语言中,一个字符除了可以用它的实体(也就是真正的字符)表示,还可以用编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。
转义字符以\
或者\x
开头,以\
开头表示后跟八进制形式的编码值,以\x
开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。
先贴张 Ascii 码表:
从码表可以得到字符 1、2、3、a、b、c 对应的编码值:
进制 | ‘1’ | ‘2’ | ‘3’ | ‘a’ | ‘b’ | ‘c’ |
---|---|---|---|---|---|---|
十进制 | 49 | 50 | 51 | 97 | 98 | 99 |
八进制 | 061 | 062 | 063 | 0141 | 0142 | 0143 |
十六进制 | 0x31 | 0x32 | 0x33 | 0x61 | 0x62 | 0x63 |
下面的例子演示了转义字符的用法:
|
|
转义字符既可以用于单个字符,也可以用于字符串,并且一个字符串中可以同时使用八进制形式和十六进制形式。
一个完整的例子:
|
|
运行结果:http://c.biancheng.net
转义字符的初衷是用于 ASCII 编码,所以它的取值范围有限:
- 八进制形式的转义字符最多后跟三个数字,也即
\ddd
,最大取值是\177
,也就是十进制的 127; - 十六进制形式的转义字符最多后跟两个数字,也即
\xdd
,最大取值是\7f
,也是十进制的 127。
超出范围的转义字符的行为是未定义的,有的编译器会将编码值直接输出,有的编译器会报错。
常用控制字符的别名
对于 ASCII 编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。不过,直接使用 ASCII 码记忆不方便,也不容易理解,所以,针对常用的控制字符,C 语言又定义了简写方式,完整的列表如下:
转义字符 | 意义 | ASCII 码值(十进制) |
---|---|---|
\a | 响铃 (BEL) | 007 |
\b | 退格 (BS) ,将当前位置移到前一列 | 008 |
\f | 换页 (FF),将当前位置移到下页开头 | 012 |
\n | 换行 (LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车 (CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表 (HT) | 009 |
\v | 垂直制表 (VT) | 011 |
\' | 单引号 | 039 |
\" | 双引号 | 034 |
\\ | 反斜杠 | 092 |
\n
和\t
是最常用的两个转义字符:
\n
用来换行,让文本从下一行的开头输出;\t
用来占位,一般相当于四个空格,或者 tab 键的功能。
单引号、双引号、反斜杠是特殊的字符,不能直接表示,要表示这些字符本身,需要用转义的形式,即在前面加反斜杠(backslash \
):
- 单引号是字符类型的开头和结尾,要使用
\'
表示,也即char single_quote = '\''
; - 双引号是字符串的开头和结尾,要使用
\"
表示,也即char double_quote = '\"'
; - 反斜杠是转义字符的开头,要使用
\\
表示,也即char backslash = '\\'
。
转义字符示例:
|
|
运行结果:
C C++ Java
"C" first appeared!