C语言:与函数有关的一个问题

为什么输出结果会是这样的呢?

#include <stdio.h>
#include <stdlib.h>

int print_ab()
{
    int numb, absolute;
    printf("请输入一个整数:");
    scanf("%d", &numb);
    if(numb > 0)absolute = numb;
    else absolute = - numb;
    printf("%d的绝对值是:%d\n", numb, absolute);
    system("pause");
    return 0;
}

int main()
{
    print_ab();
}


img

加编译参数 -fexec-charset=gbk

代码没问题,考虑IDE、编码或者系统问题

【以下回答由 GPT 生成】

解决方案

这个问题出现的原因是因为print_ab()函数没有正确地返回计算结果。在C语言中,函数的返回类型为int时,必须要在函数体内使用return语句返回一个整数值,否则返回值是不确定的。

要解决这个问题,只需在print_ab()函数的末尾添加return语句即可。

以下是修改后的代码:

#include <stdio.h>
#include <stdlib.h>

int print_ab()
{
    int numb, absolute;
    printf("请输入一个整数:");
    scanf("%d", &numb);
    if(numb > 0)
        absolute = numb;
    else
        absolute = -numb;
    printf("%d的绝对值是:%d\n", numb, absolute);
    system("pause");
    return absolute;  // 返回计算结果
}

int main()
{
    int result = print_ab();  // 主函数接收返回值
    return 0;
}

现在,print_ab()函数会正确地返回计算结果,并在主函数中处理返回值。

希望这个解决方案对你有帮助!如果还有其他问题,请随时向我提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^