C语言自定义reverse数字反转函数调用后输出原值问题排查
问题原因
- C语言默认采用值传递逻辑,调用
reverse(x)时仅会将main函数中x的数值拷贝给函数形参,函数内部对形参的修改不会作用于main里的原始x变量。 - reverse函数的反转结果通过return语句返回,现有代码调用reverse时没有接收返回值,无法获取计算后的反转结果。
修复代码
直接修改main函数中的调用与输出逻辑即可,不需要改动reverse的核心实现:
unsigned long reverse(unsigned int x) { int current, newX = 0; // 原代码中未使用的i变量已删除,避免编译警告 while (x != 0) { current = x % 10; x = x / 10; newX = newX * 10 + current; } return newX; } int main() { unsigned int x; printf("Enter number\n"); scanf_s("%d", &x); // 接收reverse返回的反转结果 unsigned long res = reverse(x); // 输出反转结果,%lu对应unsigned long类型避免格式不匹配 printf("%lu", res); return 0; }
内容的提问来源于stack exchange,提问作者adirk1
相关产品推荐
相关产品推荐

