转义字符就如字面意思一样,转变原来的意思的字符。
\n
\n我为换行符。
printf("abc\ndef");
//答案
//abc
//def
\?
\?在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。
例:
printf("(Are you ok??)");//(Are you ok]
//??)会被转译成]
//??(会被转译成[
为了避免这种情况,改为:
printf("(Are you ok\?\?)");
\'
用于表示字符常量 '
printf("%c\n",''');
// 想打印一个',但'''前两个单引号会被误认为一对单引号
为了避免这种情况,改进:
printf("%c\n",'\'');// \将'转义
\"
用于表示一个字符串内部的双引号。
同上面单引号相同。
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符。
printf("abc\ndef");//想打印 abc\ndef
//但会输出成
//abc
//def
//\n会被认成换行
为了避免这种情况,改进:
printf("abc\\ndef");
//\将\n转义成普通字符
用处:想要打印路径
printf("c:\test\net\hehe.c");
//但会误将\x认成转义字符
这时候避免此情况就可
printf("c:\\test\\net\\hehe.c");
\a
警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
\b
退格键,光标回退一个字符,但不删除字符。
printf("abcdef");//abcdef_ 光标会停在f的后面
printf("abcdef\b");//abcdef 光标会停在f处
printf("abc\bdef");//abcdef \b后还有字符这时候\b会被覆盖
\f
换页符,光标移到下一页。在现代系统上,这已经反应不出来,行为改成类似与\v。
\r
回车符,光标到同一行的开头。
printf("abcdef\r");// abcdef 光标会停在a处,也就是顶头
printf("abcdef\r ");// bcdef \r后面有一个空格会覆盖前1个字符
//\r后面有两个空格会覆盖前两个字符
\t
制表符,光标移到下一个水平制表位,通常是下一个8的倍数。
printf("ab\tdef\tq\thehe");
//ab def q hehe
// 6个空格 5个空格 7个空格
//Tab——4个字节/8个字节(可设置)
\v
垂直分隔符,光标到下一个水平制表位,通常是下一个8的倍数。
\ddd
ddd表示1~3(不一定要3个数字1个2个都可以)个八位制的数字。
注意打印的都是字符
如:\130 表示字符x
//\1 3 0
//1*8*8+3*8+0*1=88(ASCII——>x)
printf("%c\n",'\741');//741作为八进制数太大了,求出来的十进制ASCII中没有对应的
//ASCII最大127
\xdd
dd表示2个十六位进制数字。
注意打印的都是字符
如:\x30 表示字符0
//\x 3 0
// 3*16+0*1=48(ASCII———>0)
\0
NULL字符,代表没有内容,\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0。