该问题的标题不是很具体,我知道,但这是因为我不知道我的C程序正在发生什么。.我正在尝试使用泰勒多项式(具有辐射)计算sin(x)。首先,我想分享我的代码:

#define TAYLOR_MAX 10

double sin(double x){

    int i;
    double sum=0, fact=1, xi=x;

    for(i=1; i<TAYLOR_MAX; i+=2){
        sum += x / fact;
        x *= xi * xi * (-1);
        fact *= i * (i-1);
    }

    return sum;
}


好的,当我将此函数称为:

sin(1.0)


它运行并产生正确的答案:0.8414709848

但是当我这样打电话时:

double p=1.0;
sin(p)


它给出:-nan

为什么会这样呢?我该如何解决?提前致谢..

最佳答案

我用编译器测试了这段代码,结果是第一次调用sin(1.0)并没有真正调用您的sin()实现,而是返回了正确答案的其他调用。第二个调用sin(p)执行您的sin()函数,该函数返回-nan,因此看起来不起作用。

尝试将您的sin()函数重命名为其他名称,您也应该看到这一点。

关于c - 函数对相同参数的作用不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55108204/

10-13 02:00