繁体   English   中英

C语言printf浮动错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM