c双参数作为错误值传递

时间:2014-11-12 04:51:07

标签: c type-conversion header-files

我遇到了C中概率函数的双参数问题。

我有一个以double为参数的函数:

int binomrand(double p, int n)
{
    int i;
    int numevents = 0;
    for(i = 0; i < n; i++)
    {
        numevents += bernoullirand(p);
    }
    return numevents;
}

我通过.85:

 int numcoach = binomrand(.85,COACH_SEATS);

但是当我进入这个功能的那一刻,Xcode就会显示p:

p   double  5.2511106800094658E-315

关闭至少10 ^ 314的因素。甚至在调用bernoullirand之前就会发生这种情况,因此我没有在此处包含该代码。

E:

由于它是相关的,这里是binomrand的.h声明:

int binomrand(float p, int n);

这显然是错的,但我没想到要看。请注意,它是“浮动”而不是“双重”。

当我在.c文件中将函数从float更新为double时,我忽略了在.h文件中这样做。多个回答者很快意识到这一点。

1 个答案:

答案 0 :(得分:0)

如果您在首次使用之前未声明函数binomrand或未正确声明它,则会发生这种情况。在实际使用它的文件顶部声明函数或使用正确的头文件。

int binomrand(double p, int n);  /* Declaration */
相关问题