- ベストアンサー
for文
for文ですが、入れ子になってるので、 i が1の時、iが1 i が1の時、iが2 i が1の時、iが3 ・・・ i が2の時、iが1 i が2の時、iが2 i が2の時、iが3 ・・・ iが3の時、iが1 iが3の時、iが2 iが3の時、iが3 ・・・ 上記の様な増え方ではなかったのですが、 実行結果 123456789 どの様に読むか、教えてください。 for文でiを二回使っているのでバグっているのですか? int i; for(i=1;i<10;i++) for(i=1;i<10;i++) printf("%d",i);
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
int i; for(i=1;i<10;i++) //iが10未満の間ループします。 { //上のループの条件式でiに1代入してループが始まります。 for(i=1;i<10;i++) //iが10未満の間ループします。 { //上のループの条件式でiに1を代入したにも係らず、またiに1を代入してiが10未満の間ループします。 printf("%d",i); //1~9表示 //ここのループを抜けますが、この時点でiの値は10になっていますので、初めのfor文の条件にも当てはまらず、そのfor文も終了します。 } } 簡単にコメント入れておきましたが、どうでしょうか?
その他の回答 (3)
邪道ですが、こんな書き方もできます。皆さんのアドバイスが理解できたあとで考えてみると、勉強になるでしょう。 int i; for(i=0;i<10;i++){ int i; for(i=0;i<10;i++){ printf("%d",i); } } (注)良い習慣ではないので真似してはいけません。
お礼
回答ありがとうございます。 iの初期化が必要なんですね。 初心者なので、解りませんでした。 ありがとうございました。
- tyome2
- ベストアンサー率21% (28/132)
あっ、ごめんそう言う事ね。 おなじ変数でforで回しているから、 一つ目のforは二つ目のforで条件を満たしているからだよん。
お礼
すばやい回答ありがとうございました。 勉強なりました。 ありがとうございました。
補足
すばやい回答ありがとうございました。 勉強なりました。 ありがとうございました。
- tyome2
- ベストアンサー率21% (28/132)
うんとね。forが二つあるでしょ。 両方とも変数iを使用してるのね。 ってことは・・・。 わかるかな? 片方をjにしてみたらどう動くか試してみて。
お礼
回答ありがとうございます。 ちゃんとプログラムどうり動いてるんですね。 詳しく教えていただき、ありがとうございました。