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

#include <stdio.h> unsigned int to_binary(int n) { if (n <= 1) { return ("%u", n); } to_binary(n / 2); return n % 2; } int main() { sum_to_n(5); printf("%d", sum_to_n(5)); return 0; }
这段代码试图实现一个将整数转换为二进制表示的函数,但存在多个问题。`to_binary` 函数本意是递归输出二进制位,但它的返回值逻辑和递归调用方式都不正确。`main` 函数中调用了未定义的 `sum_to_n` 函数,并且 `printf` 的格式说明符与返回值类型不匹配。

- `to_binary` 函数中,`return ("%u", n)` 这一行使用了逗号表达式,实际上只返回了 `n` 的值,而不是二进制表示。递归调用 `to_binary(n / 2)` 后没有使用其返回值,导致递归结果被丢弃。最后 `return n % 2` 只返回了最低位,无法组合成完整的二进制数。

- `main` 函数中调用了 `sum_to_n`,但代码中并没有定义这个函数,这会导致编译错误。另外,`printf` 使用 `%d` 来打印 `sum_to_n` 的返回值,但 `sum_to_n` 的返回类型未知,且 `to_binary` 返回的是 `unsigned int`,格式说明符应匹配。