设计一个程序将一个字符串的数字字符按顺序形成一个新数字输出,比如字符串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);

想问一下大神们  为什么倒数第二行要减字符零


  • 数字字符,比如'5' ,它的ascii码是 53,而字符'0'的ascii码 是 48,两者想减就相当于 53 - 48 = 5, 和 5 -0 = 5的效果一样,这样就能得到字符串中的数字值了。
  • 如下第一列 二进制值,第二列 十进制值,第三列 八进制值

img