在线编译器 C

#include <stdio.h> unsigned int to_binary(int n){ if (n < 2){ return n; } return to_binary(n / 2) * 10 + n % 2; } int main() { printf ("%d",to_binary(6)); return 0; }
这段代码定义了一个递归函数 `to_binary`,试图将十进制整数转换为二进制表示,但返回的是看起来像二进制的十进制数(例如输入6返回110)。主函数中调用并打印结果。

- 函数 `to_binary` 的递归逻辑基本正确,但返回值类型 `unsigned int` 可能无法处理较大的二进制位数,因为十进制整数的表示范围有限。例如输入一个较大的数,结果可能溢出。
- 主函数中 `printf` 使用了 `%d` 格式说明符来打印 `unsigned int` 类型的返回值,这可能导致未定义行为。应该使用 `%u` 来匹配无符号整数类型。