求输入的字符串中数字字符的和,得到的结果为什么比预期值大的多

#include
using namespace std;
int main()
{
char s[255],r[255];int sum=0;
cin.getline(s,255);
for(int i=0,j=0;s[i]!='\0';i++)
{
if( s[i]>='0' && s[i]<='9' )
{
r[j] = s[i];
j++;
}
for(int j=0;j!='0';j++)
sum+=r[j];
}
cout<<sum<<endl;
return 0;

}

img

代码里得到为数字字符的 ascii 值之和,比如 ‘1’ 的 ascii 值为 49 ,‘2’ 为 50,‘1’ + ‘2’ = 49 + 50 = 99 。修改如下,供参考:

#include <iostream>
using namespace std;
int main()
{
    char s[255],r[255];
    int sum=0;
    cin.getline(s,255);
    for(int i=0,j=0;s[i]!='\0';i++)
    {
        if( s[i]>='0' && s[i]<='9' )
        {
            sum += s[i]-'0';  //修改
            //r[j] = s[i];
            //j++;
        }
        //for(int j=0;j!='0';j++)
        //     sum+=r[j];
    }
    cout<<sum<<endl;

    return 0;
}