转义字符

日常有道毒鸡汤:The shortest  distance between  two people  is a smile. 人与人之间最短的距离是微笑。


今天做题时,发现自己对转义字符的理解几乎为零,基础渣渣。只能撸一波转义字符了

有一个字符串”\\\”A100\”\\”,用strlen计算的结果是多少?

  A、6      B、7      C、8      D、9

我刚开始是这么想的,把"A100\"看成了一个独立的字符串,以为在斜杠\后面就是'\0'了,strlen也就结束了,就是答案B了,哈哈

转义字符_第1张图片

正确答案是C,为什么呢,先看下常见的转义字符吧

所有的转义字符和所对应的意义:

转义字符
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\? 代表一个问号 063
\0
空字符(NULL)
000
\ooo
1到3位八进制数所代表的任意字符
三位八进制
\xff
1到2位十六进制所代表的任意字符
二位十六进制
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
通过上面的表格来分析 "\\\"A100\"\\"    最外面2个双引号就不用管, 
\\ 表示一个斜杠\   \"表示一个双引号字符    A100表示4个字符  \"表示一个双引号字符   \\ 表示一个斜杠\
所以长度为8吧,恩,懂了吧。

那再来做个题目,测试下你真的懂转义字符没

下列转义字符中错误的是 

A.′\000′ 

B.′\14′ 

C.′\x111′ 

D.′\2′ 

直接看打印吧

转义字符_第2张图片

恩,报了2个警告,第一个警告的意思大概是字符串本来就包含结束符\0,为什么你还要加上\000,因为\0就表示NULL,所以这句话不是因为转义字符的错误。

hex escape sequence out of range  16 进制转义序列越界,所以错误的是\x111了,从上面的转义字符表可看出\x后面只能接2位数字,不然识别不出来,再来做一个实验

转义字符_第3张图片

图片中的例子有些是错误的转义字符,只是想探知计算机的处理方式,请不要在实际项目中使用

在ASCII码中,八进制的123和十六进制的53表示大写S,十六进制的56表示大写V。

从上面的例子可见计算机对8进制和16进制的转义符处理时不一样的。

下面是我的结论(不一定正确,可参考)

8进制的处理是获取斜杠\后面的3位整数,其他的原样输出。

16进制的处理是截取斜杠\x后的整数的最后2位最处理,前面的位数不管(这叫截断)。


你可能感兴趣的:(C/C++)