関数から関数へ値を渡し、値を比較して結果を出すというコードにいきずまっています。

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

関数から関数へ値を渡し、値を比較して結果を出すというコードにいきずまっています。

#1

投稿記事 by カタカナでこんにちわ » 2ヶ月前

colorfunctionで色を認識し、色によって違う数字をcolor変数に代入し、getcolorfunctionでcolorの数字を取得し色の名前を表示させるというコードを書きました。
いざコンパイルをするとエラーが出てしまいました。下に記載しておきます。
何が問題かがいまいち掴めないため分かる方ご教授願いします。
もともとこのコードはあるプログラムの一部なのでmain関数がないとかが問題ではないです。

コード:

int colorfunction(){
	int color;
	int nowcolor = ev3_color_sensor_get_color(Front_Sensor);//今ある色を読み取るリファレンス		
	switch(nowcolor){
		case COLOR_RED:
			color = 1;
			break;
		case COLOR_GREEN:
			color = 2;
			break;
		case COLOR_BLUE:
			color = 3;
			break;
	}
	return color;
	getcolorfunction();//getcolorfunctionの呼び出し
}

void getcolorfunction(){
	int color = colorfunction();
	switch(color){
		case 1:
			printf("赤です");
			break;
		case 2:
			printf("緑です");
			break;
		case 3:
			 printf("青です");
			 break;
	}
}
エラーメッセージ

コード:

app.c: In function 'colorfunction':
app.c:45:9: warning: 'color' may be used uninitialized in this function [-Wmaybe-uninitialized]
  return color;

アバター
へにっくす
記事: 621
登録日時: 6年前
住所: 埼玉県

Re: 関数から関数へ値を渡し、値を比較して結果を出すというコードにいきずまっています。

#2

投稿記事 by へにっくす » 2ヶ月前

colorが初期化されていないので、どんな値が返るか分かりませんよ、という警告(warning)です。
エラーではありません。

コード:

int color = 0; // 初期化
のように初期化してください。
また、return文のあとにgetcolorfunction();を記述していますが、return文でcolorfunction関数を抜けるので、実行されないです。削除しましょう。
written by へにっくす

返信

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