みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プログラミング

プログラミング初心者なのですが、次のソースについて説明お願いします。

#include<stdio.h>

int main(void)


int a[3];

int i;

for(i = 0; i <= 2; i++) {

a[i] = i + 1;

printf("a[%d] = %d\n", i a[i]);
}

return 0;

}

for文でiに0を代入して繰り返す条件を仮定したあとの
a[i] = i + 1; とprintfの中の仕組みがよくわかりません・・・。
お願いします<(_ _)>

投稿日時 - 2012-09-20 00:56:51

QNo.7707133

困ってます

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

>for文でiに0を代入して繰り返す条件を仮定したあとの
>a[i] = i + 1; とprintfの中の仕組みがよくわかりません・・・。
>お願いします<(_ _)>

1行ずつ、変数の値がどうなっているか…を見ていけばいいでしょう。
# printf("a[%d] = %d\n", i, a[i]); の間違いだと思われますが。

ループ1回目:
iが0で初期化されて、0 <= 2は真なのでループ継続。
a[0] = 0 + 1;
でa[0]に1を代入。
printf("a[%d] = %d\n", i, a[i]);

printf("a[%d] = %d\n", 0, a[0]);
となって、「a[0] = 1」と表示。

ループ2回目:
iがi++で1増えて1になって、1 <= 2は真なのでループ継続。
a[1] = 1 + 1;
でa[1]に2を代入。
printf("a[%d] = %d\n", i, a[i]);

printf("a[%d] = %d\n", 1, a[1]);
となって、「a[1] = 2」と表示。

ループ2回目:
iがi++で1増えて2になって、2 <= 2は真なのでループ継続。
a[2] = 2 + 1;
でa[2]に2を代入。
printf("a[%d] = %d\n", i, a[i]);

printf("a[%d] = %d\n", 2, a[2]);
となって、「a[2] = 3」と表示。

ループ3回目:
iがi++で1増えて3になって、3 <= 2は偽なのでループ終了。

ということになりますけど、どこが判りませんか?

投稿日時 - 2012-09-20 08:33:10

お礼

なるほど。
a[i] = i + 1;
のところでaの配列の添え字にfor文のカウンタのiを利用していいんですね。
もっと慣れていきたいです。ありがとうございますー<(_ _)>

投稿日時 - 2012-09-21 02:37:25

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問