转义字符

日常有道毒鸡汤: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位十六进制所代表的任意字符
二位十六进制

注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
通过上面的表格来分析 "\\\"A100\"\\"    最外面2个双引号就不用管, 
\\ 表示一个斜杠\   \"表示一个双引号字符    A100表示4个字符  \"表示一个双引号字符   \\ 表示一个斜杠\
所以长度为8吧,恩,懂了吧。

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

下列转义字符中错误的是 

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位最处理,前面的位数不管(这叫截断)。


  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值