倒数第二行要减字符零,为何加字符零

设计一个程序将一个字符串的数字字符按顺序形成一个新数字输出,比如字符串ABC45gu67,输出数字4567

int main(){
char a[80];
int i,num=0;
gets(a);
for(i=0;i<strlen(a);i++)
    if(a[i]>='0'&&a[i]<='9')
        num=num*10+a[i]-'0';
printf("%d",num);


}

a[i]-'0'是为了确保得到的是char类型对应的int数据,例如
char a='9',int b=0;b=a-'0'=9,此时变量b中存放的是数字9这个值

'0'-'0'=0
'1'-'0'=1
懂了吗

字符,在计算机中是以 ASCII 码存在的,通过字符减 '0',寻找差值,得出实际的数字