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

© 王海江1 中级黑马   /  2014-6-25 23:45  /  1603 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王海江1 于 2014-6-26 14:22 编辑

#include<string.h>
int main()
{
    char  ch[7]={ "65ab21"};
    int  i,s=0;
    for(i=0;ch>= '0'&&ch<= '9';i+=2)
        s=10*s+ch- '0';
    printf("%d\n",s);
}


结果是  6

为什么啊?不是62吗?

4 个回复

倒序浏览
当i=0时,ch[0]为定义的第一个字符组数值为6,符合for循环条件,执行  s=10*s+ch[i]- '0'=10*0+6-0=6,执行i+=2,此时i=2,ch[2]是数组元素a,值为97,不满足循环条件表达式,结束循环,故只输出6
回复 使用道具 举报 2 0
楼上解答正确
回复 使用道具 举报
1楼正解
回复 使用道具 举报
踏出梦想的轨迹 发表于 2014-6-26 00:44
当i=0时,ch[0]为定义的第一个字符组数值为6,符合for循环条件,执行  s=10*s+ch- '0'=10*0+6-0=6,执行i+= ...

谢谢。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马