转义字符
转义有两层含义,一层是把普通字符转化为特殊字符,例如’\t’;另一种是将特殊字符转化为普通字符,例如’\’。
转义字符可以分为三类,第一类是普通转义字符,第二类是八进制转义字符,第三类是十六进制转义字符。
普通转义字符
| 转义字符 | 释义 |
|---|---|
| \? | 书写连续多个问号时,防止被解析成三字母 |
| \’ | 用于表示字符常量’ |
| \" | 用于表示字符常量" |
| \\ | 用于表示字符常量\ |
| \a | 警告字符,蜂鸣器鸣响 |
| \b | 退格符 |
| \f | 进纸符 |
| \n | 换行 |
| \r | 回车 |
| \t | 水平制表符 |
| \v | 垂直制表符 |
其中\b并不是键盘上的backspace键,而是光标向前回退一个字符
例如下图:

还需注意的是\r 和\n 的区别,/r 是回车,/n 是换行 ;早期的打字机上,要另起一行打字需要两个步骤,首先要发送命令"/r”将打字头复位,即回车,然后再发送命令"/n”让打字机走纸移到下一行,所以这个历史遗留问题导致了如今我们在DOS-Windows的系统里需要区分"/r/n”和“/n”
两者具体区分如下:

八进制和十六进制转义字符
八进制转义字符的格式是\ddd(ddd表示1~3个八进制的数字),例如\123代表的就是十进制的83,查阅ASCII码表可知,它代表的字符是S。
十六进制转义字符的格式是\xdd(dd代表1~2个十六进制的数字),例如\x2a代表的就是十进制的42,查阅ASCII表可知,它代表的字符是*。
需要注意的是,不管八进制还是十六进制的转义字符其本质都是字符型变量,所以只有八个字节,故八进制转义字符最大到\377(二进制的1111 1111)

同理十六进制转义字符的最大值为\xff(二进制1111 1111)。
程序输出什么?
#include <stdio.h>
#include <string.h>
int main(){
printf("%d",strlen("c:\test\328\test.c"));
return 0;
}
结果为14,其中的转义字符有’\t’,’\32’,’\t’。




