也许在一些代码中你看到 \n, \0 很纳闷是啥。其实在字符中有一组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。
比如:我们有字符n,在字符串中打印的时候自然能打印出这个字符,如下:
#include<stdio.h>
int main()
{
printf("abcndef");
return 0;
}
输出的结果:
如果我们修改一下代码,在n的前面加上 \ ,变成如下代码:
#include<stdio.h>
int main()
{
printf("abc\ndef");
return 0;
}
输出的结果:
我们可以看到修改的前后代码输出的结果是截然不同的,那这是为什么呢?
这就是转义字符的问题,\n 是一个转义字符表示换行的意思,我们可以简单的理解为 \ 让 n 的意思法上了转变,n 本来是一个普通的字符,被 \ 转义为换行的意思。
C语言中像这样的转义字符还有一些,具体如下:
- \? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了
- \‘ :用于表示字符常量’
- \" : 用于表示一个字符串内部的双引号
- \\ :用于表示一个反斜杠,防止它被解释为一个转义序列符
- \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生
- \b :退格符,光标回退一个字符,但不删除字符
- \n :换行符
- \t :制表符,光标移到下一个垂直制表位,通常时下一个8的倍数
下面两种转义字符可以理解为:字符的8进制或者16进制表示形式
- \ddd:d d d表示1~3个八进制的数字。如:\130 表示字符X
- \xdd:d d表示2个十六进制数字。 如:\x30 表示字符0
\0:NULL字符,代表没有内容,\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其中ASCII码值是0.
代码演示:
#include <stdio.h>
int main()
{
printf("%c\n", '\'');
printf("%s\n", "\"");
printf("c:\\test\\code\\test.c\n");
printf("\a");
printf("%c\n", '\130');
//130是8进制,转换成10进制是88,以88作为ASCII码值的字符是'X'
printf("%c\n", '\x30');
//x30中的30是16进制,转换成10进制是48,以48作为ASCII码值的字符是'0'
return 0;
}
转义字符参考:转义序列 - cppreference.com