我正在尝试使用rand()函数生成一些数字,如下所示:
int main()
{
int i=0
for(i=0;i<20;i++)
{
printf("%f\n",rand_md());
}
return 0;
}
float rand_md()
{
return (float)rand()/(RAND_MAX+1.0);
}
但是当我运行gcc rand.c时,我收到如下错误: rand.c:在函数'main'中: rand.c:21:警告:格式'%f'需要输入'double',但参数2的类型为'int' rand.c:顶级: rand.c:36:错误:'rand_md'的冲突类型 rand.c:21:错误:先前的'rand_md'隐式声明在这里
我的代码出了什么问题?
最诚挚的问候,
答案 0 :(得分:6)
当您使用函数而不首先声明它时,C将假定它返回int
。要解决此问题,您必须先声明rand_md
的方法签名,然后才能在main()
中调用它。
在main
之前或在头文件中添加类似的内容:
float rand_md();
答案 1 :(得分:1)
double rand_md()
{
return (double )rand()/(RAND_MAX+1.0);
}
现在,rand_md
返回double
而不是float
。
此外,由于您没有将其包含在帖子中,因此您应该在main()
之前引入函数原型。您还忘了在int i = 0
添加分号。更正后的代码如下所示:
double rand_md();
int main()
{
int i=0;
for(i=0;i<20;i++)
{
printf("%f\n",rand_md());
}
return 0;
}
double rand_md()
{
return (double )rand()/(RAND_MAX+1.0);
}
答案 2 :(得分:0)
您可以使用随机(最大数量)来实现此目的。