重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (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文も終了します。
 }
}

簡単にコメント入れておきましたが、どうでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/05 23:23

邪道ですが、こんな書き方もできます。

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

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

お礼日時:2006/11/05 23:27

あっ、ごめんそう言う事ね。


おなじ変数でforで回しているから、
一つ目のforは二つ目のforで条件を満たしているからだよん。

この回答への補足

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

補足日時:2006/11/05 23:27
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/05 23:30

うんとね。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!