C语言转义字符
2021年1月11日 | by tgcode
字符集(Character Set)为每个字符分配了唯一的编号,我们不妨将它称为编码值。在C语言中,一个字符除了可以用它的实体(也就是真正的字符)表示,还可以用编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Esc++ape Character)。
转义字符以或者
x
开头,以开头表示后跟八进制形式的编码值,以
x
开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。
字符 1、2、3、a、b、c 对应的 ASCII 码的八进制形式分别是 61、62、63、141、142、143,十六进制形式分别是 31、32、33、61、62、63。下面的例子演示了转义字符的用法:
char a = '61'; //字符1 char b = '141'; //字符a char c = 'x31'; //字符1 char d = 'x61'; //字符a char *str1 = "x31x32x33x61x62x63"; //字符串"123abc" char *str2 = "616263141142143"; //字符串"123abc" char *str3 = "The string is: 616263x61x62x63" //混用八进制和十六进制形式
转义字符既可以用于单个字符,也可以用于字符串,并且一个字符串中可以同时使用八进制形式和十六进制形式。
一个完整的例子:
#include int main(){ puts("x68164164x70://c.biancheng.x6e145x74"); return 0; }
运行结果:
http://c.biancheng.net
转义字符的初衷是用于 ASCII 编码,所以它的取值范围有限:
-
八进制形式的转义字符最多后跟三个数字,也即
ddd
,最大取值是177
; -
十六进制形式的转义字符最多后跟两个数字,也即
xdd
,最大取值是x7f
。
超出范围的转义字符的行为是未定义的,有的编译器会将编码值直接输出,有的编译器会报错。
对于 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 键的功能。
单引号、双引号、反斜杠是特殊的字符,不能直接表示:
-
单引号是字符类型的开头和结尾,要使用
'
表示,也即'''
; -
双引号是字符串的开头和结尾,要使用
"
表示,也即"abc"123"
; -
反斜杠是转义字符的开头,要使用
表示,也即
''
,或者"abc123"
。
转义字符示例:
#include int main(){ puts("CtC++tJavan"C" first appeared!"); return 0; }
运行结果:
C C++ Java
“C” first appeared!
相关推荐: 如何编译和运行C++程序?C++ 和C语言类似,也要经过编译和链接后才能运行。在《C语言编译器》专题中我们讲到了 VS、Dev C++、VC 6.0、Code::Blocks、C-Free、GCC、Xcode 等常见 IDE 或编译器,它们除了可…