警告:格式“%f”需要类型为“float”的参数,但参数 2 的类型为“double”

warning: format ‘%f’ expects argument of type ‘float ’, but argument 2 has type ‘double ’

各位。 我需要帮助! 我试图在 HackerRank 的挑战之后提交这个: 任务 给定餐费(一顿饭的基本成本)、小费百分比(作为小费添加的餐费百分比)和餐费百分比(作为税添加的餐费百分比),找到并打印一顿饭的总费用。将结果四舍五入到最接近的整数。

#include <stdio.h>
#include <math.h>
int main()

{
    int tax,tip;
    double mealc;
    
scanf("%f",&mealc);
scanf("d",&tip);
scanf("%d",&tax);
mealc = mealc+(mealc*tip/100))+(mealc*tax/100);
printf ("%d",round(mealc));

    return 0;
}

编译上面的代码后。我总是遇到这些错误:

Hk2.c:33:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]

Hk2.c:37:11: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=]

有什么问题?

将 mealc 更改为浮动。在你的第二次 scanf tou 错过了一个 %: scanf("%d",&tip);

正如警告消息所说,转换说明符 %f 被指定为类型 float 而不是类型 double.

的对象的输入值

要为 double 类型的对象输入值,您需要使用转换说明符 %lf

scanf("%lf",&mealc);

另外你这个电话打错了

scanf("d",&tip);

你需要写

scanf("%d",&tip);

并且在这个声明中

mealc = mealc+(mealc*tip/100))+(mealc*tax/100);

有多余的右括号。你需要写

mealc = mealc+(mealc*tip/100)+(mealc*tax/100);