• ベストアンサー

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);

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

  • ベストアンサー
  • nerosuke
  • ベストアンサー率33% (39/115)
回答No.3

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文も終了します。  } } 簡単にコメント入れておきましたが、どうでしょうか?

startover
質問者

お礼

回答ありがとうございます。 ちゃんとプログラムどうり動いてるんですね。 詳しく教えていただき、ありがとうございました。

その他の回答 (3)

noname#71195
noname#71195
回答No.4

邪道ですが、こんな書き方もできます。皆さんのアドバイスが理解できたあとで考えてみると、勉強になるでしょう。 int i; for(i=0;i<10;i++){ int i; for(i=0;i<10;i++){ printf("%d",i); } } (注)良い習慣ではないので真似してはいけません。

startover
質問者

お礼

回答ありがとうございます。 iの初期化が必要なんですね。 初心者なので、解りませんでした。 ありがとうございました。

  • tyome2
  • ベストアンサー率21% (28/132)
回答No.2

あっ、ごめんそう言う事ね。 おなじ変数でforで回しているから、 一つ目のforは二つ目のforで条件を満たしているからだよん。

startover
質問者

お礼

すばやい回答ありがとうございました。 勉強なりました。 ありがとうございました。

startover
質問者

補足

すばやい回答ありがとうございました。 勉強なりました。 ありがとうございました。

  • tyome2
  • ベストアンサー率21% (28/132)
回答No.1

うんとね。forが二つあるでしょ。 両方とも変数iを使用してるのね。 ってことは・・・。 わかるかな? 片方をjにしてみたらどう動くか試してみて。