两个c的选择题

kisa99 2003-10-18 12:54:25
1。 int i;
char *s="a\045+045\'b";
for(i=0;*s++;i++)
答案是i=8; 能帮我解释一下第二行意思和*s++怎么控制循环,
2。 #include <stdio.h>
main()
{int i;
char *s="a\n35\b";
for(i=0;*s++;i++);
printf("i=%d\n",i);
}
问输出多少,帮我解释一下,我真的看不懂了。谢谢!!
...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
smj31 2003-10-18
  • 打赏
  • 举报
回复
1.分析如下
i==0时,s指向 a
i==1,s \
i==2,s 045即'-'
i==3,s +
i==4,s 045
i==5,s \
i==6,s '
i==7,s b
i==8,s '\0'
2.同上
ttlb 2003-10-18
  • 打赏
  • 举报
回复
第二个类似,测试一下就知道了。
daizh 2003-10-18
  • 打赏
  • 举报
回复
1、char *s="a\045+045\'b";s的内容等同于sArray[]={'a','\045','+','0','4','5','\'','b','\0'}共9个字符。
for(i=0;*s++;i++)当*s的内容非空,执行循环语句,同时s++指向下一个字符,根据上面的sArray[],当读到'\0'字符时循环结束,i++后值为8
2、输出i=5,原因同上解释。
ttlb 2003-10-18
  • 打赏
  • 举报
回复
1
i *s *s++ 第一次循环中s先++,然后执行for循环中的内容
0 a \045
1 \045 +
2 + 0
3 0 4
4 4 5
5 5 \'
6 \' b
7 b '\0'
8 '\0'
试一下:
int i;
char *s="a\045+045\'b";
for(i=0;*s++;i++)
{
cout << i << '\t' << *s << endl;
}
cout << i;

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧