c语言求一个数的各位数之和,为什么运算错误

#include <stdio.h>
int fun(int x);
int sum,a,n;
int main ()
{
printf("请输入一个正整数");
scanf("%d",&n);
sum=fun(n);
printf("sum=%d",sum);
return 0;
}
int fun(int x)
{
if(x==0)
return 0;
else
{
a=x%10;
sum=a+fun(x/10);
return sum;
}
}

输入32
打印sum=6
为啥会运算错误呢

你题目的解答代码如下:

#include <stdio.h>
int fun(int x);
int sum, a, n;
int main()
{
    printf("请输入一个正整数");
    scanf("%d", &n);
    sum = fun(n);
    printf("sum=%d", sum);
    return 0;
}
int fun(int x)
{
    int sum;
    if (x == 0)
        return 0;
    else
    {
        a = x % 10;
        sum = a + fun(x / 10);
        return sum;
    }
}

如有帮助,望采纳!谢谢!

sum没有初始值呀,先对sum赋初值。

#include <stdio.h>
int fun(int x);
int sum=0,a,n;
int main ()
{
    printf("请输入一个正整数");
    scanf("%d",&n);
    sum=fun(n);
    printf("sum=%d",sum);
    system("pause");
    return 0;
}
int fun(int x)
{
    if(x==0)
        return 0;
    else
    {
        sum += x%10;
        fun(x/10);
        return sum;
    }
}