前言:什么是转移字符
从字面意思可以理解:
转义字符就是转义字符:转变原来的意思的字符。
#include<stdio.h>
int main()
{
printf("abcndef");//结果为 abcndef
return 0;
}
在n前面加入\,则会变成:
#include<stdio.h>
int main()
{
printf("abc\ndef");//结果为 abc
return 0; // def 及\n变成换行符了
}
这里的\n不再打印,即\n的意思被转义了
什么情况下用转义字符
一般来讲,在打印字符或者传递字符时才会用转移字符
转义字符汇总表
转移字符有很多,可以在https://zh.cppreference.com/w/c/language/escape
转义字符汇总表链接
查看
\’
⽤于表⽰字符常量’
如:
#include<stdio.h>
int main()
{
printf("'\n"); //可以直接打印 --容易与双引号混淆
printf("\'\n"); //可以配合单引号打印--推荐(这样不容易与双引号混淆)
printf("%c",'\''); //打印单引号
return 0;
}
\"
与’类似,它⽤于表⽰⼀个字符串内部的双引号
如:
#include<stdio.h>
int main()
{
printf("\"\n"); //不可以直接打印,只能前面加斜杠。
printf("%c\n", '\"'); //打印双引号
printf("%s\n", "\""); //打印双引号
return 0;
}
\?
电脑早期有写三字母词,比如
//??( -----[
//??) -----]
在每个字母?前加上斜杠,来防止它们翻译成三字母词。
现在编译器一般不支持三字母词,故很少使用转义字符?
\\
\:⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符
如:
#include<stdio.h>
int main()
{
printf("c:\code\test.c \n");// c:code est.c 前面\未打印 后面\t被转义了
printf("c:\\code\\test.c \n");// c:\code\test.c 前面\正常打印 后面\t未被转义
return 0;
}
\a
警报字符,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
这个字符无法直接演示。注意:电脑静音时无法听到。
这个字符可以用来判断程序是否走过某某路径。
\b
\b:退格键,光标回退⼀个字符,但不删除字符,下次从该光标开始打印(覆盖)。
如:
#include<stdio.h>
int main()
{
printf("abcdef \n"); //打印后光标落在f后面
printf("abcdef\b"); //打印后光标落在f身上(前面)
getchar();
return 0;
}
\f
换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
\n
换⾏符。
如:
#include<stdio.h>
int main()
{
printf("abc\ndef\nabc"); //abc 换行 def 换行 abc
return 0;
}
\r
回⻋符,光标移到同⼀⾏的开头
#include<stdio.h>
int main()
{
printf("abcdef\r1234"); //打印1234 f
return 0;
}
这里因为\r光标回到同行第一位,打印时会覆盖前面。
又因为字符串"1234"后面有隐藏的\0所以打印时1234后面还有一个空格
\t
制表符,光标移到下⼀个⽔平制表位,相当于电脑Tab键,通常是下⼀个4/8的倍数宽度不固定。这个可以设置,一般用于对齐。
\v
垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。(基本不用)
特殊转义字符\ddd
\ddd是指字符的8进制表示形式,d表示八进制数字
如:
#include<stdio.h>
int main()
{
printf("\123");//表示S 123是S的ASCLL值(8进制)
printf("\110");//表示H 110是H的ASCLL值(8进制)
return 0;
}
特殊转移字符\xdd
\xdd字符的16进制表示形式,d是表示16进制数字
如:
#include<stdio.h>
int main()
{
printf("\x41");//表示A x41是A的ASCLL值(16进制)
printf("\x61");//表示a x61是a的ASCLL值(16进制)
return 0;
}
特殊转移字符\0
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其
ASCII码值是0.
ASCLL码值的参考表链接https://zh.cppreference.com/w/cpp/language/ascii