ローカル変数の初期化について

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

ローカル変数の初期化について

#1

投稿記事 by せっちゃん » 16年前

こんばんわ
C言語初心者です。
初歩的な質問で申し訳ないですが、どうしても解決できなくて質問させていただきます。

私は学生のためのCという本を使ってC言語の勉強をしているのですが、
この本の通りにプログラムを書いたのに、エラーが出ます。

コンパイルはMicrosoft Visual C++ 2008 Express Editionを使っています。


#include <stdio.h>

main()
{
float x, y, z;

printf("z=x*(x+y)/{y*(x-y)}計算します。\n");
printf("xとyを入力してください。----->");
scanf("%f %f, &x, &y");
z =x*(x+y)/(y*(x-y));
printf("z=%7.3f\n", z);
return(0);

}
エラーは
warning C4700: 初期化されていないローカル変数 'x' が使用されます
warbubg C4700: 初期化されていないローカル変数 'y' が使用されます
とでています。
どこがおかしいのでしょうか・・?

Dixq (管理人)

Re:ローカル変数の初期化について

#2

投稿記事 by Dixq (管理人) » 16年前

ダブルコーテーションの位置がおかしいです。
誤:scanf("%f %f, &x, &y"); 
正:scanf("%f %f", &x, &y);
後、ゼロ割対策がされていないので、
「1 1」や「0 0」と入力するとバグるのでは無いかと思います。

せっちゃん

Re:ローカル変数の初期化について

#3

投稿記事 by せっちゃん » 16年前

お早い解答ありがとうございます。
見落としてましたorz
こんな初歩的なミスを指摘してくれてありがとうございました!

たいちう

Re:ローカル変数の初期化について

#4

投稿記事 by たいちう » 16年前

> エラーは
> warning C4700: 初期化されていないローカル変数 'x' が使用されます
> warbubg C4700: 初期化されていないローカル変数 'y' が使用されます
> とでています。

エラーではなくて警告です。
エラーの場合は、こんなもんコンパイルできるか~、という感じですが、
警告の場合は、コンパイルできることはできるけど、少し怪しくね?という感じです。

scanfが間違っていたので、その次の行の計算をしようとするときに、
xとyは初期化も代入もされていない、ごみデータのままです。
ホントにこんなデータで計算しちゃっていいの?という警告ですね。

コンパイラの声に耳を傾けましょう。

閉鎖

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