printf関数のエラー(エラー番号4477)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まちゃみー

printf関数のエラー(エラー番号4477)

#1

投稿記事 by まちゃみー » 9年前

コード:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

 int main(void)
{
	int i1;
	int i2;
	double ave;

	//ここまで関数の宣言

	printf("Data1を入力してください。\n");
	scanf("%d", &i1);
	printf("Data2を入力してください。\n");
	scanf("%d", &i2);

	//ここまで整数の入力

	ave = (i2 / i1)*100;
	printf("Data1はData2の%f%%分ですよ",&ave );

	return 0;

}
二つの整数を入力して一方が他方の何パーセント分の値か,ということを求めるプログラムを作ったつもりなのですが,
C4477: 'printf' : format string '%f' requires an argument of type 'double', but variadic argument 1 has type 'double *'
とエラーが発生しうまく実行できません.
こちらのエラーは「%fはdouble用の変換仕様なんだけどアナタはdouble *を指定していますよ」ということなのでしょうか.
Microsoft Visual Studio 2015を使用しています.どちらを直せばよいのかご教授頂けたら幸いです.

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: printf関数のエラー(エラー番号4477)

#2

投稿記事 by みけCAT » 9年前

指摘されている通り、printfに正しい型のデータを渡せばいいでしょう。

コード:

printf("Data1はData2の%f%%分ですよ",&ave );

コード:

printf("Data1はData2の%f%%分ですよ",ave );
ついでに、このままだと割り算の結果が切り捨てられてdoubleを使う意味が減るので、

コード:

ave = (i2 / i1)*100;

コード:

ave = ((double)i2 / i1)*100;
とするといいかもしれません。
さらにメッセージの内容を考えると、

コード:

ave = ((double)i1 / i2)*100;
の方がいいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る