Online Compiler C

#include <stdio.h> int digit_to_num(char c) { int sum = 0, digit; if (c >= '0' && c <= '9') { digit = c - '0'; } sum = sum + digit; return sum; } int main(void) { int c; while ((c = getchar()) != '.') { printf("%d", digit_to_num(c)); } return 0; }
这段代码试图将输入的每个数字字符转换成对应的整数并输出,但存在逻辑问题。函数 `digit_to_num` 本应返回单个数字的值,却错误地使用了累加和未初始化的变量。

- 函数 `digit_to_num` 中,变量 `digit` 只在字符是数字时才被赋值,如果输入的不是数字(比如换行符或字母),`digit` 没有被初始化就直接参与运算,这会导致未定义行为。
- 变量 `sum` 在函数中每次调用都会重置为0,然后只加一次 `digit` 就返回,所以 `sum` 是多余的。函数实际上只需要返回 `digit` 的值即可。