转义字符是什么?跟普通的字符或者说中文字符有什么关系?
以UTF-8环境为例,在这个环境下,数字、字母、中文字符、转义字符,都是一样的,每一个字符都是一一对应一个01码,而转义字符的特殊之处在于,它们通常不可打印,也就是说看不到,比如换行符\n,回车符\r(关于这两个符号,另一篇会有专门的内容讨论)、‘\t’ ‘\v’ ‘\f’(后边介绍)。
其实所有的转义字符分为两种,除了一些不可打印的“可执行”字符需要用转义字符表示之外,还有一些因为被系统使用做语法标示(直接可执行)的普通字符,为了避免二义性而重复,所以反倒要通过转义字符来表示这些可执行字符本身的样子,那就是:双引号、单引号、反斜杠。
这块梳理一下:
1 .所有字符分为:
- 普通打印字符:a,F,3
- 有特殊含义字符
- 普通打印字符加反斜杠(斜杠是除法):\t
- 字符本身表示特殊含义:“ \
2 .于是有这些需求
- 打印普通字符,正常打就好
- 打印特殊含义字符的特殊含义,正常打就好
- 打印特殊含义字符的字符
- 普通打印字符加反斜杠的,这种正常打就好
- 字符本身表示特殊含义的,这种比较特殊,打印方法很简单,给他们加一个反斜杠
附:
(1)水平制表符(‘\t’)
一般来说,其在终端和文件中的输出显示相当于按下键盘TAB键效果。一般系统中,显示水平制表符将占8列。同时水平制表符开始占据的初始位置是第8*n列(第一列的下标为0)。例如:
puts("0123456\txx");
puts("0123456\t\txx");
在终端的输出为
(2)垂直制表符(‘\v’)
垂直制表符不常用。它的作用是让‘\v’后面的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列。例如:
puts("01\v2345");
在终端输出为
(3)换页(‘\f’)
换页符的在终端的中的效果相当于Linux中clear命令。终端在输出‘\f’之后内容之前,会将整个终端屏幕清空空,然后在输出内容。给人的该觉是在clear命令后的输出字符串。