日常有道毒鸡汤:The shortest distance between two people is a smile. 人与人之间最短的距离是微笑。
今天做题时,发现自己对转义字符的理解几乎为零,基础渣渣。只能撸一波转义字符了
有一个字符串”\\\”A100\”\\”,用strlen计算的结果是多少?
A、6 B、7 C、8 D、9
我刚开始是这么想的,把"A100\"看成了一个独立的字符串,以为在斜杠\后面就是'\0'了,strlen也就结束了,就是答案B了,哈哈
正确答案是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位十六进制所代表的任意字符
|
二位十六进制
|
那再来做个题目,测试下你真的懂转义字符没
下列转义字符中错误的是
A.′\000′
B.′\14′
C.′\x111′
D.′\2′
直接看打印吧
恩,报了2个警告,第一个警告的意思大概是字符串本来就包含结束符\0,为什么你还要加上\000,因为\0就表示NULL,所以这句话不是因为转义字符的错误。
hex escape sequence out of range 16 进制转义序列越界,所以错误的是\x111了,从上面的转义字符表可看出\x后面只能接2位数字,不然识别不出来,再来做一个实验
图片中的例子有些是错误的转义字符,只是想探知计算机的处理方式,请不要在实际项目中使用
在ASCII码中,八进制的123和十六进制的53表示大写S,十六进制的56表示大写V。
从上面的例子可见计算机对8进制和16进制的转义符处理时不一样的。
下面是我的结论(不一定正确,可参考)
8进制的处理是获取斜杠\后面的3位整数,其他的原样输出。
16进制的处理是截取斜杠\x后的整数的最后2位最处理,前面的位数不管(这叫截断)。