Онлайн компилятор C

#include <stdio.h> int digit_sum(unsigned int n){int sum=0; while(n>0){sum+=n%10; n/=10; printf ("%d",sum);} return 0; }
这段代码定义了一个函数 `digit_sum`,目的是计算一个无符号整数的各位数字之和。但代码中存在逻辑错误,导致输出结果不符合预期。

- 函数在循环内部每次计算一位数字后,立即用 `printf` 打印当前的累加和,而不是在循环结束后一次性输出最终结果。这会导致输出多个中间值,而不是最终的和。
- 函数返回了固定的 `0`,而不是计算出的数字和 `sum`,这会让调用者无法得到正确的返回值。

建议检查循环中 `printf` 的位置,以及函数的返回值应该是什么。