求详细解析 不太懂细节

img

用字符和数字的ascll码进行计算,0的ascll码是48,A的是65
,最后输出112

img

#include<stdio.h>

int main()
{
    char c[]="1a23b5";
    int i,s=1;
    for(i=0; c[i]>='0'&&c[i]<='9'; i=i+2)
    {
    int tem=s;
        printf("i:%d  c[i]:%c  s:%d  \n",i,c[i],s);
        s=10*s+c[i]-'0';
        printf("s=10*%d+%d-%d=%d\n\n",tem,c[i],'0',s);
    }

    //printf("\n%d\n",s);



    return 0;
}

从第一个字符开始,如果是数字字符,则将数字字符转化成数值进行累加计算