変数の宣言に関する質問です。

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

変数の宣言に関する質問です。

#1

投稿記事 by しろ » 15年前

C言語を勉強中の超初心者です。


九九の表を作るプログラムで

------------------

#include<stdio.h>

int main(void){

int i,j;
int k=i*j;


for(i=1;i<=9;i++){
for(j=1;j<=9;j++){

printf("%d\t",k);
}
printf("\n");
}


return 0;

}

------------------

とするとエラーがでました。


int k=i*j;

の位置の問題で試しに

for(j=1;j<=9;j++){
int k=i*j;
printf("%d\t",k);
}

のよう入れ子にするとうまくいきます。

これはなぜなのでしょうか?

たかぎ

Re:変数の宣言に関する質問です。

#2

投稿記事 by たかぎ » 15年前

処理系不明なので詳しいことはいえませんが...

> エラーがでました。

どんなエラーが出たのでしょうか?
警告ならわかりますが、エラーが出る状況ではないと思います。

しろ

Re:変数の宣言に関する質問です。

#3

投稿記事 by しろ » 15年前

説明不足で申し訳ありません。。

visual studioでソリューションのビルド→デバックなしで実行

とするとDebug error

Run-time check failure#3 the variable 'i' is being used without being intialized

とでます。

英語は苦手なのでなんのことやら? といった感じなのですが・・・・・・

Dixq (管理人)

Re:変数の宣言に関する質問です。

#4

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

和訳に困ったらエキサイト翻訳っ!
http://www.excite.co.jp/world/english/

と思いましたが、とんでもない和訳になりますね;
私も英語が苦手なので、気持ちはよく解ります。

・・が、別に完璧な和訳が出来なくてもなんとなく意味は解りませんか?

「initialize」は「初期化する」ですよね?
で、
「without」が「~なしに」
で、
「use」が「使う」

この辺で大体解ってきませんか?
苦手意識を持たずにとりあえず挑戦してみて下さい。

また、変数は初期化せずに使うとエラーを引き起こす原因になります。
変数は用意しただけではゴミが入っています。

何も代入していない物を表示させても意味ありませんしね。
ということで、上のプログラムに置いて、i,jは使われていますか?
使うことなくkに代入していませんか?

もしこの意味が解らないようなら、プログラムの処理の順番が解っていないのだと思います。
プログラムは上から下へと処理が流れます。
ですから

int i,j;
int k = i*j;

では、kに何がはいっているのかわかりません。
i,jには何が入っているか解らないのですから。

iとjは下で掛け算に使っているじゃないかと思うかもしれませんが、
kに代入した時点で掛け算の処理は行われていませんよね。

例えば

「りんごを受け取る」
「みかんを受け取る」
「2つの果物を絞る」

という3つの動作があったとしましょう。
今やってる順番は

「2つの果物を絞る」
「りんごを受け取る」
「みかんを受け取る」

になってしまっているのです。ですから、絞るものが無くて困っているのです。
iとjに値を代入してあげてから掛け算の結果を代入しましょう。

しろ

Re:変数の宣言に関する質問です。

#5

投稿記事 by しろ » 15年前

>プログラムは上から下へと処理が流れます。

なるほど、ありがとうございます。おかげで理解できました。

なお、北大通り沿いにある北15条くらいの郵便局向かいの孔子飯店の四川麻婆豆腐は世界一です。 画像

Dixq (管理人)

Re:変数の宣言に関する質問です。

#6

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

何の話かと思えば札幌の話でしたか、今度チェックしてみます^^;

閉鎖

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