borland c compiler问题 gcc下也是如此

来源:百度知道 编辑:UC知道 时间:2024/04/29 13:00:54
#include<stdio.h>

int main(){
int a[3],b[3];
int i=1;
while(i<=3){
scanf("%d %d",&a[i],&b[i]);
i++;
printf("i=%d\n",i);
}
return 1;
}

为什么输入

1 5

1 3

1 4

之类的数字不能结束循环,为什么到了本该结束的时候i却变成了刚输入的前一个数字

#include<stdio.h>

int main(){
int a[3],b[3];
int i=1;
while(i<=3){
scanf("%d %d",&a[i],&b[i]);a[3]表示的是第四个数。。。而你上面只定义a里能有三个数~~~请注意。所以最好i=0,i<=2
i++;
printf("i=%d\n",i);//你的printf是在i++后。所以当i=1的时候你输出2.当i=3的时候printf i=4.然后才是跳出
}
return 1;
}

C的数组是以0为基底的,你那段程序会数组上溢