char[]="a\128b\\\tcd\n";printf("%d",strlen(s));答案是9,为什么?

 我来答
友油妮薅
推荐于2018-05-09 · 致力于回答相关问题。
友油妮薅
采纳数:109 获赞数:1222

向TA提问 私信TA
展开全部
11个字符,打印出来是
a
gb\ cd
解释:1、a表示字母a;
2、\12是转义字符,表示八进制10,就是换行符,换到下一行;
3、8表示数字8;
4、b表示字母b;
5、\\ 是转义字符,表示\;
6、\t是转义字符,表示制表符,横向跳到下一制表位置;
7、c表示字母c
8、d表示字母d
9、\xd表示16进制13,就是回车符,回到该行的开头;
10、g表示字母g
11、\n是转义字符,表示回车换行
所以存放的是:a 换行符(10) 8 b \ 制表符 c d 回车符(13) g 回车换行符
一共11个
为什么打印出来是那个样子呢?
首先打印a,换行,在打印8和b,制表符(横向跳到下一制表位置,也就是空格了),c,d
到这里之后,就是回车符了,这个问题就来了,回车(ASCII码13)就是回到当前行的开头却不向下移一行.与我们按enter有点区别,其实Enter键按下后会执行\n\r这样就是我们看到的一般意义的回车了,所有,g回到了开头位置,也就是8的位置,\n就不用说了吧,它是最后的,换行,所以出来的结果就是上面的样子.
Yfh_b
2011-06-18
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
9个符是a \12 8 b \ \t c d \n.
a不用说了
\12是ASCII码12代表的字符,为什么不是\128呢,是因为ASCII只有127个
8和b不用说了
\\会输出\代表一个字符
\t是ASCII中的制表符,代表一个字符
c和d不用说了
\n是ASCII中的换行符,代表一个字符
追问
那请问为什么不是拆成\1,2,8或者是\1,28呢?谢谢
追答
\转义符号会一直截取到最后出现的合理值,是一种规定,死记的~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qqbuby163
2011-06-18 · TA获得超过224个赞
知道小有建树答主
回答量:249
采纳率:100%
帮助的人:105万
展开全部
补充说明:
9 个字符: 'a' ' \12' '8' 'b' '\\' ' \t ' 'c' 'd' ' \n'

这里主要看转移字符 相信 除了 字符 '\12' 不懂外,其他您应该都明白吧

转移字符 '\uuu' 对应ASCII的字符,其中u是八进制整数,所以'\128'中的8是不合法的,
因为八进制里没有数字8,其范围为0~7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式