fmod函数的问题

cprime 2008-08-20 06:27:45
#include <stdio.h>
#include <math.h>

float MyRnd()
{
double long M;//请注意,这里一定要用到double long,否则计算2^32会溢出

float Lamda, Rn, Xn;

Lamda=pow(5,5);

M=pow(2,32);

Xn=fmod(Lamda*Xn,M);//这个地方有什么问题

Rn=Xn/M;

return Rn;

}

main()
{
int i;

for(i = 0; i < 100; i++;)
{

printf("%d",MyRnd());

}
}
编译的结果:
/tmp/cckGk3qS.o: In function `MyRnd':
/home/jiayuan/code/随机算法.c:14: undefined reference to `fmod'
collect2: ld 返回 1
...全文
774 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dede22 2008-08-21
  • 打赏
  • 举报
回复
-lm 的意思就是挂接math库.libm,数学库使这个,简写就是-lm。比如有一个库是libst.so,那就是-lst.
cprime 2008-08-21
  • 打赏
  • 举报
回复
用你的方法编译通过了。在此谢谢额
cprime 2008-08-21
  • 打赏
  • 举报
回复
想问一楼一下。-l是链接选项,链接到库文件,-m是什么选项阿,在gcc里找了半天还是没有找到阿
选项太多了。慢慢找会把我给找疯的。
cprime 2008-08-21
  • 打赏
  • 举报
回复
我用的就是gcc
试试你的方法
linzsoft 2008-08-20
  • 打赏
  • 举报
回复

double fmod(double x, double y);

float fmodf(float x, float y);

long double fmodl(long double x, long double y);

So you should try the last one.
brookmill 2008-08-20
  • 打赏
  • 举报
回复
LZ用的是什么编译环境?
我只知道gcc的情况。gcc做链接的时候,缺省情况下不链接数学库,所以找不到fmod的实现。必须加选项指示编译器链接数学库:
gcc -lm test.c
其它编译器可能也是类似情况吧,LZ看看手册

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧