我遇到了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文件中这样做。多个回答者很快意识到这一点。
答案 0 :(得分:0)
如果您在首次使用之前未声明函数binomrand
或未正确声明它,则会发生这种情况。在实际使用它的文件顶部声明函数或使用正确的头文件。
int binomrand(double p, int n); /* Declaration */