我定义了一个函数查找int数组的平均值,函数如下:
float MeanInt(int x[],int num){
float mean, sum = 0.0f,res=0.0f;
int i;
for(i=0;i<num;i++){
sum += (float)(x[i]);
printf("x[%d] is %d\n", i,x[i]);
printf("sum is %f\n", sum);
}
res = sum/((float)(num));
printf("mean should be %f\n", res);
return res;
}
此功能中的printf()
全部正常工作。
问题是当我在我的项目中使用它时,如下所示:
printf("mean number is %f\n", MeanInt(ls_tr_acl,num_round));
我遇到一个错误说:
格式%f
需要double
类型的参数,但参数2的类型为int
我完全感到困惑,因为函数printf()
中的MeanInt()
打印出正确的结果。我还在一些玩具示例上测试MeanInt()
,它总是正常工作。问题只发生在我在项目中运行时。
答案 0 :(得分:2)
在第一次调用之前,您没有声明函数MeanInt
,因此编译器假定MeanInt
的类型是一个返回int
的函数,它接受任意数量的参数。
修复
包括适当的头文件(包含声明),或将定义移到上面使用或在使用前声明它:
float MeanInt(int x[],int num);
您可以在文件顶部的全局范围内或在较窄的范围内声明它。