1.定义
转变原来字符的意思,叫做转义字符
2.转义字符
转义字符 : '\字母'
1.\n : 换行
结果:faeg换行
2.\0 : 空字符
常被系统自动加在每个字符串的尾部,作为字符串的结束标志,占用一个字节的内存空间 (打印到\0结束,后面的不会打印)
结果:faeg未打印
3.\t : 水平制表符
即横向跳格,跳到下一制表位,可把每8个字符看作一个水平制表符,即\t前面字符还差几个满8个字符就空几个字符的位置
结果:sd后空出了六个字符才继续打印
4.\b : 退格
vs2022为向左删除一格(博主目前没有别的编译器)
结果:把f左边的g删了
5.\v : 垂直制表
即竖向跳格,vs2022为类似换行的效果
结果:理论上是竖向跳格,感官上是换行
6.\r : 回车
将光标位置移到首位
先打印sdvgbag后遇到\r,光标挪到最左边把开始打印的覆盖后继续打印
结果:只输出faeg
7.\f : 换页,走纸符
将当前位置光标移到下一页开头,在控制台中无法体现出作用,在打印走纸换页时可以使用,它能将后面的文体打印到一张新纸
结果:理论上光标挪到下一页上继续打印,观感上,在控制台中类似换行
8.\a : 发出鸣响
输出\a时会有错误音效
结果:电脑发出警告提示音
9.\":输出/输入双引号("")
结果:在g后面多输出了一个“
10.\':输出/输入单引号('')
结果:在g后面多输出了一个‘
11.\? : 输出/输入问号(?)
结果:在g后面多输出了一个?
引申:三字母词
在一些古老编译器中会出现三字母词的问题
printf("%s\n","(hello??)")
正常情况下,输出的结果应该是(hello??)
在古老编译器中则会把??)翻译成 ] ,
(hello]
所以,为了避免三字母词的问题出现,建议把??改成\?\?
printf("%s\n","(hello\?\?)")
结果:
(hello??)
当然现在的编译器大多数都不会出现这个问题,但是还是希望可以规范语法书写
12.\\ : 输出/输入反斜杠(\)
结果:在g后面多输出了一个\
13.\/:输出/输入斜杠(/)
结果:在g后面多输出了一个/
14.\ddd : 1~3位八进制所代表的字符,举例:\101\n 结果:A : 八进制101对应十进制为65,对应ASCII码为 A
15.\xhh : hh指两位十六进制所代表的字符,使用前要加\x,举例:\x41\n 结果:A : 八进制101对应十进制为65,对应ASCII码为 A
问:
printf("%d\n",strlen("c:\test\628\test.c"));
以上代码有几个单位长度呢?
答:14
\t只算一个单位
\628呢?众所周知,八进制是从0-7的,咩有8啊。所以应该吧\62看成一个单位,8是一个单位
而\0只站位但是却不表示,所以答案是14
3.ASCII码
ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符——来自百度百科
附加ASCII码
4.尾声
此上就是我在学习转义字符的简单学习心得,有错误希望各位大佬指出,小的会在第一时间检查并修改,让我们下一篇再见