这是C文件:http : //simul.iro.umontreal.ca/rng/WELL19937a.c(我没有评论,正如L'Ecuyer告诉的那样)
这是C头:http : //simul.iro.umontreal.ca/rng/WELL19937a.h
问题是:C文件中的此双精度(* WELLRNG19937a)(void)在哪里?
我没看到 但是它存在。此代码在TIGCC上有效,但产生0。
#include "WELL44497a.h"
#include <tigcclib.h>
void _main(void)
{
unsigned int u=33337;
InitWELLRNG44497a(&u); //this function probably wants array of good seeds but I don't have them.
double a = WELLRNG44497a() ;
clrscr();
printf("%f",a);
ngetchx();//wait for keyboard input
}
删除InitWELLRNG44497a(&u)会引发SIGSEGV(这确保了其他功能的存在)
如果您告诉我此功能在哪里,我将非常感激。更重要的是,如果您告诉我如何使用此功能。
PS。没什么可澄清的了。这是一个非常愚蠢的问题,但回答正确。函数始终为零的原因是不同的。
double (*WELLRNG19937a) (void)
是指向double funcname (void)
函数的指针。
在第一个功能
void InitWELLRNG19937a (unsigned int *init)
你可以看到
WELLRNG19937a = case_1;
case_1在哪里
double case_1 (void)
然后在主要情况下,您要调用一个由WELLRNG19937a
指针指向的函数。真正的调用函数是case_1
。
删除InitWELLRNG44497a(&u)会引发SIGSEGV
这会导致段错误,因为它InitWELLRNG44497a
是初始化函数指针,否则指针未初始化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句