一、转义字符的定义
转义字符(Escape character),所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C语言中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符。转义字符中的转移代表着字符已经被转换了意义。
转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分。对于一个给定的字母表,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。因此转义字符开头的字符序列被叫做转义序列。
二、转义字符的应用
首先我们来看这一串代码,我们看第二处的printf函数中,语句的最后加上了\n,那么这个举动会对他们运行的结果产生怎样的影响?
#include <stdio.h>
int main()
{
printf("I love you!");
printf("I love you!\n");
printf("I love you!");
return 0;
}
当我把上方代码运行一下,我们的电脑屏幕上就出现了下方的运行结果。
通过运行结果我们可以看到,第一个printf语句和第二个printf语句打印的内容紧挨着,第三个printf语句却没有出现在第二个printf语句的后面,而是出现在了屏幕上第二行,那么是什么造成了这种现象呢,我们返回看到代码,唯一让我们起疑点的地方就是第二个printf语句后面加上了\n,那么我们的猜测是否正确,答案是肯定的。
既然我们猜到了是什么原因导致的这种现象,那么接下来我们该了解它为什么会导致这张种现象。这就是我们转义字符导致的问题,\n 是⼀个转义字符,它表示换行的意思,这里我们可以理解成“\”这个字符让字符n的意思发生了转变,n原本只是一个再普通不过的字母,但由于“\”的加入,使得n的意思发生了转换,即由原来的意思转换为换行的意思。
那么接下来我们又联想到,除了\n这个转义字符之外,是否还有其它的转义字符,答案是有的,下面就是在我们C语言中会遇到的一些转义字符。
转义字符 | 意义 |
---|---|
\a | 响铃 |
\b | 退格,将当前位置移到前一列 |
\f | 换页,将当前位置移到下一页开头 |
\n | 换行,将当前位置移到下一行开头 |
\r | 回车,将当前位置移到本行开头 |
\t | 水平制表,光标移到下一个水平制表位,通常是下一个8的倍数 |
\v | 垂直制表,光标移到下一个垂直制表位,通常是下一行的同一列 |
\? | 在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词 |
\' | 用于表示字符常量' |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释成一个转义序列符 |
\0 | 空字符(NULL),没有内容 |
\ddd | d d d表示1~3个八进制的数字 |
\xdd | d d表示2个十六进制数字 |
这些就是我们在C语言中可能会遇到的转义字符。
当我们返回定义看一看时,我们不得不又联想到一个问题,定义中说“C语言中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符”,那么我们究竟能不能看到这些转义字符的ASCII值呢?那么我们有了以下代码。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("%d\n", '\a');
printf("%d\n", '\b');
printf("%d\n", '\f');
printf("%d\n", '\n');
printf("%d\n", '\r');
printf("%d\n", '\t');
printf("%d\n", '\v');
printf("%d\n", '\?');
printf("%d\n", '\'');
printf("%d\n", '\"');
printf("%d\n", '\\');
printf("%d\n", '\0');
printf("%d\n", '\130');
printf("%d\n", '\x30');
return 0;
}
结果为:
这样,这些转义字符的ASCII值我们都知道了,那么我们的表格可以完善一下。
转义字符 | 意义 | ASCII值 |
---|---|---|
\a | 响铃 | 7 |
\b | 退格,将当前位置移到前一列 | 8 |
\f | 换页,将当前位置移到下一页开头 | 12 |
\n | 换行,将当前位置移到下一行开头 | 10 |
\r | 回车,将当前位置移到本行开头 | 13 |
\t | 水平制表,光标移到下一个水平制表位,通常是下一个8的倍数 | 9 |
\v | 垂直制表,光标移到下一个垂直制表位,通常是下一行的同一列 | 11 |
\? | 在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词 | 63 |
\' | 用于表示字符常量' | 39 |
\" | 用于表示一个字符串内部的双引号 | 34 |
\\ | 用于表示一个反斜杠,防止它被解释成一个转义序列符 | 92 |
\0 | 空字符(NULL),没有内容 | 0 |
\ddd | d d d表示1~3个八进制的数字 | |
\xdd | d d表示2个十六进制数字 |
那么这篇转义字符的简单介绍就到这里了,如果文章当中有什么错误或者大佬们有什么不同的意见都可以留言说明,我会继续加油的!