こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語について

C言語についてなのですが、error C4700: 初期化されていないローカル変数 'dright' が使用されますという表示がでてしまいます。今地下鉄の環状線の距離を計算して求めるというプログラミングを作っています。どうすれば直るのでしょうか。また、おかしいと思われる場所があれば教えていただきたいです。下がぼくが書いたソースです。
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
float d[15] = { 0.0, 0.0, 1.6, 3.0, 4.3, 5.4, 8.2, 8.9, 9.7, 14.1, 15.1, 17.2, 20.7, 22.2, 23.4 };
float dright(int a, int b)//右回りのときの計算
{
if (d[a]<d[b])
{
return d[b] - d[a];
}
else
{
return d[a] - d[b];
}
}
int main(void)
{
int a, b;
float dright, dleft;

printf("出発駅番号の入力");
scanf("%d", &a);
printf("到着駅番号の入力");
scanf("%d", &b);
if (a = b)//出発駅と到着駅が同じ場合
{
printf("出発駅と到着駅が同じです。もう一回やり直してください。");

}
else
{
dleft = 26.4 - dright;//左回りの計算

if (dleft > dright)//左回りのほうの距離が長い場合
{
printf("%f", dright);//右回りの距離を表示
}
else
{
printf("%f", dleft);
}

}
return 0;
}
どなたかお願いします。

投稿日時 - 2014-04-05 15:39:12

QNo.8542712

困ってます

質問者が選んだベストアンサー

ローカル変数 'dright' に値が代入されていません。
本来は、関数で値を求めたいのではないでしょうか。
最初に書いてある関数は、名前が変数名と同じ 'dright' なので呼び出せません。

意図が上の通りなら、関数名を
 float calc_dright(int a, int b)
などに変更し、「左回りの計算」の前に
 dright = calc_dright(a, b);
を入れると良いでしょう。


それと
 if (a = b)
では比較ではなく代入してしまいます。
正しくは
 if (a == b)
です。

投稿日時 - 2014-04-05 17:49:23

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

エラーメッセージにエラーの理由が書かれているのですが
それが理解できないのでしょうか?

>error C4700: 初期化されていないローカル変数 'dright' が使用されます
「初期化」の意味が判らないのでしょうか?
「ローカル変数」の意味が判らないのでしょうか?
「'dright'」がどこで使用されているか判らないのでしょうか?
どれでしょうか?

>dleft = 26.4 - dright;//左回りの計算
>if (dleft > dright)//左回りのほうの距離が長い場合
>printf("%f", dright);//右回りの距離を表示
これらの行が実行されるときの'dright'の値はなに?

投稿日時 - 2014-04-05 16:57:48

あなたにオススメの質問