c语言printf float error

时间:2016-03-26 08:29:44

标签: c

我定义了一个函数查找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(),它总是正常工作。问题只发生在我在项目中运行时。

1 个答案:

答案 0 :(得分:2)

在第一次调用之前,您没有声明函数MeanInt,因此编译器假定MeanInt的类型是一个返回int的函数,它接受任意数量的参数。

修复
包括适当的头文件(包含声明),或将定义移到上面使用或在使用前声明它:

float MeanInt(int x[],int num);

您可以在文件顶部的全局范围内或在较窄的范围内声明它。