課題に取り組んでいますが、次の警告が表示されます。
C4_4_44.c:173:2: warning: format ‘%f’ expects argument of type ‘float *’,
but argument 2 has type ‘double *’ [-Wformat]
Variabledは、mainで次のように宣言されています。
double carpetCost;
私は関数を次のように呼び出しています:
getData(&length, &width, &discount, &carpetCost);
そして、これが機能です:
void getData(int *length, int *width, int *discount, double *carpetCost)
{
// get length and width of room, discount % and carpetCost as input
printf("Length of room (feet)? ");
scanf("%d", length);
printf("Width of room (feet)? ");
scanf("%d", width);
printf("Customer discount (percent)? ");
scanf("%d", discount);
printf("Cost per square foot (xxx.xx)? ");
scanf("%f", carpetCost);
return;
} // end getData
本はあなたが&を使用しないと言っているので、これは私を夢中にさせています
scanf("%f", carpetCost);
渡した関数からアクセスする場合は参照してください。
私がここで間違っていることについて何か考えはありますか?
変化する
scanf("%f", carpetCost);
と
scanf("%lf", carpetCost);
%f
変換仕様はfloat *
引数に使用され、%lf
引数にはdouble *
が必要です。
%lf
引数の代わりにdouble *
指定を使用してください。
scanf("%lf", carpetCost);
Use %lf instead of %f if you are scanning a double type of variable.
you can check this in detail also about %lf & %f from the discussed thread's link
http://stackoverflow.com/questions/210590/why-does-scanf-need-lf-for-doubles-when-printf-is-okay-with-just-f