for文内でscanf関数により配列に数値を格納することについて
プログラミング初心者です。
よろしくお願いします。
◎1------------------------------------
#include<stdio.h>
int main(void)
{
int i,dt[3];
for(i=0;i<3;++i){
printf("dt[0]=%d\n",dt[0]);
printf("dt[1]=%d\n",dt[1]);
printf("dt[3]=%d\n",dt[3]);
scanf("%d",&dt[i]);
printf("i=%d\n",i);
puts("");
if(dt[i]==0){
break;
}
}
printf("dt[0]=%d\n",dt[0]);
printf("dt[1]=%d\n",dt[1]);
printf("dt[2]=%d\n",dt[2]);
printf("dt[3]=%d\n",dt[3]);
printf("i=%d\n",i);
puts("");
i=1;
while(1){
printf("%d ",i);
if(1000<i){
break;
}
i*=2;
}
puts("");
return 0;
}
----------------------------------------
◎2------------------------------------
#include<stdio.h>
int main(void)
{
int i,dt[2];
for(i=0;i<3;++i){
printf("dt[0]=%d\n",dt[0]);
printf("dt[1]=%d\n",dt[1]);
printf("dt[2]=%d\n",dt[2]);
scanf("%d",&dt[i]);
printf("i=%d\n",i);
puts("");
if(dt[i]==0){
break;
}
}
printf("dt[0]=%d\n",dt[0]);
printf("dt[1]=%d\n",dt[1]);
printf("dt[2]=%d\n",dt[2]);
printf("i=%d\n",i);
puts("");
i=1;
while(1){
printf("%d ",i);
if(1000<i){
break;
}
i*=2;
}
puts("");
return 0;
}
----------------------------------------
以上2つのプログラムについて疑問があります。
まず◎1については、あえて添え字のdt[3]の値を見てみようと思ったら、iの値が入っているとわかりました。
しかし、何故添え字の番号の配列にiの値が入っているのかがわかりません。
次に◎2ですが、3回目のループで、添え字の番号の配列自身に入力した数値を格納すると、iと添え字番号配列に入力した数値が入っていました。
何故このようになっているのか疑問です。
以上のような疑問があります。
添え字の番号の配列とiが何か関連があるようですがいまいちわかりません。
教えていただけると嬉しいです。