C言語について教えてください。


以下のソースコードでエラーがでます。なぜでしょうか?どのように変更すればいいのでしょうか?

int _tmain(int argc, _TCHAR* argv[])
{
double v[3];
v[0]=100;
v[1]=100;
v[2]=100;
double xx;
xx=average(v,3); <==ここでエラー
printf("%d",xx);
printf("Type return key to exit");
getchar();
return 0;
}

double average(double v[],int n){
double sum=0;
int i;
for(i=0;i<n;i++){
sum=sum+v[i];
}
return(sum/n);
}

エラーメッセージは

error C2664: 'average' : 1 番目の引数を 'double [3]' から 'long []' に変換できません。

環境はVS2005 C++コンソールアプリケーションです。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/10/10 22:08:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:dungeon-master No.1

回答回数571ベストアンサー獲得回数40

ポイント60pt

プロトタイプ宣言もない状況で関数の宣言より先に参照が行われているため、

デフォルトの型が適用されているのではないかと思います。


double average(double v[],int n){~}の定義を、int _tmainの定義より

上に書いてはいかがでしょうか。

  • id:taknt
    double v[3];

    long v[3];
    にしないとダメなんじゃないのかなぁ?
    あと いろいろ型の調節は しないとダメだろうけど。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません