エラーの原因がわかりません

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

エラーの原因がわかりません

#1

投稿記事 by narica » 15年前

今、私は選択した数字によって展開が分岐する簡単なアドベンチャーを作っているのですが、下記のプログラムでコンパイルすると Run-Time Check Failure #3 - The variable 'a' is being used without being initialized. というエラーが出てしまいます。


#include "stdafx.h"
#include "stdlib.h"

int sentakua(int);

int _tmain(int argc, _TCHAR* argv[/url])
{
   int a;
   sentakua(a);
   system("pause");
   return 0;
}

int sentakua(int a){

printf("\"敵\"が現れた!\n"
"-------------------------------------------------\n"
"どうしますか?\n"
"(1:攻撃する,2:様子を伺う,3:逃げる)---");
scanf("%d", &a);

switch(a){
   case 1:
printf("-------------------------------------------------\n"
   "攻撃が当たった!\n"
   "\"敵\"に 55 のダメージを与えた!\n");
   break;

   case 2:
printf("-------------------------------------------------\n"
   "\"敵\"もこちらの様子を伺っているようだ。\n");
   break;

   case 3:
printf("-------------------------------------------------\n"
   "しかし、\"敵\"に回り込まれてしまった!\n");
   break;

   default:
printf("-------------------------------------------------\n"
   "間違った選択をする事は\"死\"を意味します。\n");

return 0;

}

return 0;
}


なぜこのエラーが出てしまうのか教えて頂けると助かります。
まだ、C言語を始めて日が経たないのでお手柔らかにお願いします。

--------------------------------------------------------------------------------------------------
開発環境
OS:Windows XP Home Edition Service Pack 3
開発環境:Visual C++ 2010 Express 画像

パコネコ

Re:エラーの原因がわかりません

#2

投稿記事 by パコネコ » 15年前

/*
#include "stdafx.h"
#include "stdlib.h"

int sentakua(int a);
*/
int aではなくintだけだったと思ったのですが…違ったらすいません

シエル

Re:エラーの原因がわかりません

#3

投稿記事 by シエル » 15年前

The variable 'a' is being used without being initialized
↑これを見るとaの変数が関係していることが分かります。

で、こいつを翻訳にかけると、

「初期化されずに、可変'a'は使用されています。」

と出ました。

まさに、そのとおりでaが初期化されない状態でsentakua関数に渡されてしまっているから、
このエラーが出ております。

narica

Re:エラーの原因がわかりません

#4

投稿記事 by narica » 15年前

パコネコさん:直しておきました。
         ご指摘、ありがとうございました!

シエルさん:返答ありがとうございます。
        差し支えなければ初期化のやり方を教えて頂けると助かります。 画像


narica

Re:エラーの原因がわかりません

#6

投稿記事 by narica » 15年前

シエルさん:ありがとうございます!
エラーも出ずにコンパイルできました! 画像

box

Re:エラーの原因がわかりません

#7

投稿記事 by box » 15年前

> エラーも出ずにコンパイルできました!

そもそも、_tmainからsentakuaにaを渡す必要があったのでしょうか。
提示されたコードを見る限り、必要性は全くないと思います。 画像

シエル

Re:エラーの原因がわかりません

#8

投稿記事 by シエル » 15年前

私も意味がないと思ってましたが、
まだポインタなどがあまり理解されてないと思ってあえて突っ込みませんでした。すみません。

box

Re:エラーの原因がわかりません

#9

投稿記事 by box » 15年前

> パコネコさん:直しておきました。
>          ご指摘、ありがとうございました!

別に直さなくてもよかったのに。
プロトタイプ宣言では、引数の型だけ書いてもよいし、
型と変数名を書いてもよいです。

なお、プロトタイプ宣言で
int sentakua(int a);
と書いたからといって、
同関数の定義時も引数の名前をaにしなければならない、
というわけではありません。
まあ、同じにしておくのがわかりやすいですけど。

閉鎖

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