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:変数の宣言に関する質問です。
処理系不明なので詳しいことはいえませんが...
> エラーがでました。
どんなエラーが出たのでしょうか?
警告ならわかりますが、エラーが出る状況ではないと思います。
> エラーがでました。
どんなエラーが出たのでしょうか?
警告ならわかりますが、エラーが出る状況ではないと思います。
Re:変数の宣言に関する質問です。
説明不足で申し訳ありません。。
visual studioでソリューションのビルド→デバックなしで実行
とするとDebug error
Run-time check failure#3 the variable 'i' is being used without being intialized
とでます。
英語は苦手なのでなんのことやら? といった感じなのですが・・・・・・
visual studioでソリューションのビルド→デバックなしで実行
とするとDebug error
Run-time check failure#3 the variable 'i' is being used without being intialized
とでます。
英語は苦手なのでなんのことやら? といった感じなのですが・・・・・・
Re:変数の宣言に関する質問です。
和訳に困ったらエキサイト翻訳っ!
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に値を代入してあげてから掛け算の結果を代入しましょう。
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:変数の宣言に関する質問です。
>プログラムは上から下へと処理が流れます。
なるほど、ありがとうございます。おかげで理解できました。
なお、北大通り沿いにある北15条くらいの郵便局向かいの孔子飯店の四川麻婆豆腐は世界一です。
なるほど、ありがとうございます。おかげで理解できました。
なお、北大通り沿いにある北15条くらいの郵便局向かいの孔子飯店の四川麻婆豆腐は世界一です。
