警告:格式“%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);
各位。 我需要帮助! 我试图在 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);