了解转义字符
也许在前面的代码中你看到 \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 :退格键,光标回退⼀个字符,但不删除字符。
• \f :换页符,光标移到下⼀页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。
• \n :换行符。
• \r :回⻋符,光标移到同⼀行的开头。
• \t :制表符,光标移到下⼀个水平制表位,通常是下⼀个8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下一行的同⼀列。
下面2种转义字符可以理解为:字符的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;
}