char[]="a\128b\\\tcd\n";printf("%d",strlen(s));答案是9,为什么?
3个回答
展开全部
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就不用说了吧,它是最后的,换行,所以出来的结果就是上面的样子.
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就不用说了吧,它是最后的,换行,所以出来的结果就是上面的样子.
展开全部
9个符是a \12 8 b \ \t c d \n.
a不用说了
\12是ASCII码12代表的字符,为什么不是\128呢,是因为ASCII只有127个
8和b不用说了
\\会输出\代表一个字符
\t是ASCII中的制表符,代表一个字符
c和d不用说了
\n是ASCII中的换行符,代表一个字符
a不用说了
\12是ASCII码12代表的字符,为什么不是\128呢,是因为ASCII只有127个
8和b不用说了
\\会输出\代表一个字符
\t是ASCII中的制表符,代表一个字符
c和d不用说了
\n是ASCII中的换行符,代表一个字符
追问
那请问为什么不是拆成\1,2,8或者是\1,28呢?谢谢
追答
\转义符号会一直截取到最后出现的合理值,是一种规定,死记的~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补充说明:
9 个字符: 'a' ' \12' '8' 'b' '\\' ' \t ' 'c' 'd' ' \n'
这里主要看转移字符 相信 除了 字符 '\12' 不懂外,其他您应该都明白吧
转移字符 '\uuu' 对应ASCII的字符,其中u是八进制整数,所以'\128'中的8是不合法的,
因为八进制里没有数字8,其范围为0~7
9 个字符: 'a' ' \12' '8' 'b' '\\' ' \t ' 'c' 'd' ' \n'
这里主要看转移字符 相信 除了 字符 '\12' 不懂外,其他您应该都明白吧
转移字符 '\uuu' 对应ASCII的字符,其中u是八进制整数,所以'\128'中的8是不合法的,
因为八进制里没有数字8,其范围为0~7
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询