黑马程序员技术交流社区
标题:
字符串问题 请写明详细推理过程
[打印本页]
作者:
jiangenhao
时间:
2014-4-21 22:14
标题:
字符串问题 请写明详细推理过程
本帖最后由 jiangenhao 于 2014-4-25 15:36 编辑
15.下面程序段中,for循环的执行次数是()。
char *s="\ta\018bc";
for (;*s!='\0';s++) printf("*");
A. 9 B. 5 C. 6 D. 7
复制代码
作者:
blz01003hm
时间:
2014-4-21 23:05
6次
第一次 \t
第二次 a
第三次 \01 //\0后跟数字就不是\0了
第四次 8
第五次 b
第六次 c
作者:
m573555543
时间:
2014-4-22 08:01
c
\t a \01 8 b c \0
\t \01是转义字符,\0是赋值时自动加上的
作者:
桑托尔
时间:
2014-4-23 07:58
本帖最后由 桑托尔 于 2014-4-23 07:59 编辑
基本的楼上都已经解释全了,我仅来解释\018的意思。
就是"\0"后面如果加上数字的话,作用就不是字符串结束了,而是变成了转义字符
转义字符是干什么用的呢?意思是\0后面存的数是8进制的,而不再是10进制。
但是8进制的铁律是,数字必须是0-7之间,在本题中\0后面数字是18,8不在范围内,就没有把8算进去。\01就是以8进制形式存储一个1 ,然后又以10进制形式存储了个8
所以是 '\t' 'a' '\01' '8' 'b' 'c'
如何证明我的说法?
如果你把原题变成”\ta\017bc“ 答案将会变成 5
是因为一共有 '\t' 'a' '\017‘ 'b' 'c' 这5个字符
作者:
jiangenhao
时间:
2014-4-25 15:35
明白了 谢谢大家的解答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2