函数对于相同的参数行为不同

问题描述 投票:0回答:1

问题的标题不是很具体,我知道,但这是因为我不知道我的C程序发生了什么。我正在尝试使用Taylor多项式(带有辐射)来计算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

为什么会这样?我怎么解决这个问题?提前致谢..

c function types arguments double
1个回答
1
投票

我用我的编译器测试了这段代码,结果是第一次调用sin(1.0)实际上并没有调用你的sin()实现,而是另外一些返回正确答案的东西。第二次调用sin(p)执行你的sin()函数返回-nan,所以它似乎不起作用。

尝试将你的sin()函数重命名为其他东西,你也应该看到它。

© www.soinside.com 2019 - 2024. All rights reserved.