转义字符
转义有两层含义,一层是把普通字符转化为特殊字符,例如’\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’。