[英]c language printf float error
我定义一个函数,查找一个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
我完全感到困惑,因为函数MeanInt()
的printf()
MeanInt()
打印出了正确的结果。 我还在一些玩具示例中测试了MeanInt()
,它始终可以正常工作。 该问题仅在我在项目中运行时才会发生。
您没有在第一次调用之前声明函数MeanInt
,因此编译器认为MeanInt
的类型是返回带任意数量参数的int
的函数。
固定
包括适当的头文件(包含声明),或将定义移至用法上方,或在使用之前将其声明为:
float MeanInt(int x[],int num);
您可以在文件顶部的全局范围内或在较小范围内声明它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.