下面程序的运行结果是。

2022-03-27 科技 73阅读
你应该就这一句不好理解吧?
for(i=0;ch[i]>=’0’&&ch[i]<=’9’;i+=2)
s=10*s+ch[i]-‘0’;
printf(“%d\n”,s);
分下格式,容易看。
for循环,循环进行的条件是ch[i]是'0'字符到'9'字符之间。首先i=0,ch[0]就是charch[7]={“12ab56”};这个字符串的第一个字符,就是'1'符合条件,进入循环的下一条语句s=10*s+ch[i]-‘0’;s=0,所以10*s是0,ch[0]-'0'='1'-'0'=1,2个字符串进行算术运算,取他们的asc编码进行运算,你查下编码表就知道了,‘1’比‘0’大1.然后相加s=0+1=1。
然后进入循环更新式,也就是i+=2这一条了,这个简单吧,i=i+2,开始i=0,现在i=2了,然后i=2代入测试式ch[i]>=’0’&&ch[i]<=’9’,ch[2]这次是字符数组的的第3个元素,也就是'a'了,不满足循环条件,所以不执行循环的下一条语句s=10*s+ch[i]-‘0’,循环结束。
然后输出s的值,s=1,输出1
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com