1.转义字符
1.1常见的转义字符
转义字符 | 释义 |
---|---|
\? | 在书写连续多个问号时使用,防止被解析为三字母词 |
\' | 用于表示字符常量 |
\'' | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转移序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符,作用是将光标向前推进一格 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。如:\130 |
\xdd | dd表示2个十六进制数字。如:\x30 |
1.1.1. \?
当我们连续书写多个?时,我们需要用到\?,防止其被解析为一个三字母词。什么是三字母词?三字母词英文名称为trigraph,在早年艰苦的时候,有很多字符是不存在的,所以常常会使用三字母词来代替,如用??=来代替#,??<>??来代替{},所以就有了连续多次使用?的场景,那么问题来了,假如我们就仅仅需要一个问号呢?如何才能避免被解析成一个三字母词呢?于是便有了\?这么个转移字符。
1.1.2.\'
在解释这个字符串之前,我们首先来解决一个问题:如何在屏幕上打印一个字符常量" ' "?
printf("%c",''');//这样?
printf("%c",'\'')//还是这样?
我们在VS2022环境下编译 ,很显然,第一种写法并不可取,因为已经报错了。而我们这时也可以理解\'的用法了。
1.1.3.\''
\''用于表示一个字符串内部的双引号,类似于\'
显而易见的,单独的"在字符串中会发生报错。这时便需要\"了。
1.1.4.\\
用于表示一个反斜杠,防止它被解释为一个转移序列符。假如我们要打在屏幕上打印一个下载路径,D:\BaiduNetdiskDownload\Genshin Impact Game
如果直接打印,我们会得到这么一串字母?感觉有点不对劲,是不是少了点什么?emmm,没错,是\,对比可知,打印出来的路径没有一个\,那怎样才能打印出来呢?我们只需在每一个\前再加一个\,就可以了。如图
1.1.5.\a
\a的用法很简单,就只是电脑发出一声蜂鸣。
感兴趣的读者可以试着输入这段代码,运行后你就可以听到蜂鸣啦!、
1.1.6.\b
\b是退格符 ,作用是将光标向前推进一格。我们还是来举例子吧。
1.1.7.\f
\f,进纸符。。。目前来看,这个转义字符已经很少使用了,所以这里就不多赘述了。≡ω≡
1.1.8.\n
printf("\n");//简单地运行这段代码,就可以实现代码的换行啦
这个转义字符相信各位都已经很熟悉了,就不做赘述了。
1.1.9.\r
回车,乍一想,回车似乎就是换行的意思?其实并不是这样。我们比较一下下面这两段代码
printf("asdfg\r");
printf("qwert");
printf("asdfg\n");
printf("qwert");
区别在哪?
注意到了吗?\r是来到当前行的首个字符处,如果继续输入,则会将当前位置的字符覆盖掉,而\n则是来到下一行的首个字符处。
1.1.10.\t
水平制表符其实就是我们键盘上的Tab键,一般相当于8个空格的位置。
1.1.11.\v
垂直制表符在一般情况下并不常用,它的作用是让‘\v’后面的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列。
这是网传的解释,只是现在似乎出了点问题?我还没彻底弄清楚原因。这个以后再讲。
1.1.12\ddd
ddd表示1~3个八进制的数字。如:\130,这个应该并不难理解。不过要注意一点,因为是八进制,所以这些数字最大为7.
1.1.13\xdd
同理,因为是16进制,所以最大数是F。