c函数不返回结果

时间:2013-01-12 18:37:06

标签: c function return

我最近开始学习C语言,所以我意识到我的问题非常基础,但是非常感谢任何帮助。

我正在尝试将函数事实返回到main的res值,但是当我在main中打印出结果时我得到0.通过插入一些print语句我可以看到res在事实中正确计算例程但结果没有正确返回到main。

我确定我在这里遗漏了一些非常基本的东西。

由于

#include <stdio.h>

unsigned long fact (int n){
    unsigned long res = 1;

    while ( n >= 0 )
    {
        res *= n;
        n--;
    }

    return res;
}

int main (void){
    int n;
    unsigned long res;

    printf("Insert number:\n");
    scanf("%d", &n );

    res = fact (n);

    printf("The factorial number is %lu", res);

    return 0;
}

2 个答案:

答案 0 :(得分:8)

您的循环条件为n >= 0,这意味着在函数返回之前res将乘以0。因此结果将始终为0.

答案 1 :(得分:7)

你的循环条件错了。最后一次while (n>=0)将有n=0。将res乘以此将其重置为0.

您可以通过将循环更改为while (n > 1)

来解决此问题

为了将来参考,您可以使用调试器(例如GDB或visual studio express)调查此类问题。或者通过在代码中添加printf语句来跟踪流程,并查看res的值如何通过程序进行更改。