プログラミング
プログラミング初心者なのですが、次のソースについて説明お願いします。
#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
>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
このQ&Aは役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています
回答(1)