A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangenhao 中级黑马   /  2014-4-21 22:14  /  960 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jiangenhao 于 2014-4-25 15:36 编辑


  1. 15.下面程序段中,for循环的执行次数是()。
  2. char *s="\ta\018bc";
  3. for (;*s!='\0';s++) printf("*");
  4. A. 9                   B. 5            C.  6             D. 7
复制代码

点评

不要刷分!!!!!  发表于 2014-4-25 19:50

6 个回复

倒序浏览
6次
第一次 \t
第二次 a
第三次 \01   //\0后跟数字就不是\0了
第四次 8
第五次 b
第六次 c
回复 使用道具 举报 1 0
c
\t a \01 8 b c \0
\t \01是转义字符,\0是赋值时自动加上的
回复 使用道具 举报
本帖最后由 桑托尔 于 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个字符

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
明白了 谢谢大家的解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马