#include
int main(void)
{
int lettera[8]={1,2,3,4,5,6,7,8};
int letterb[8];
int i,sum=0;
for(i=0;i<8;i++)
{
sum+=lettera[i];
letterb[i]=sum;
}
printf("%d\n",lettera[i]);
printf("%d\n",letterb[i]);
return 0;
}
执行完for循环后i的值已经是8了,而两个数组的最大下标值为7(数组下标是从0开始的)。
printf("%d\n",lettera[i]);
printf("%d\n",letterb[i]);
下标都越界了。此时i=8
应该这样
for(i=0;i<8;i++)
{
sum+=lettera[i];
letterb[i]=sum;
printf("%d\n",lettera[i]);
printf("%d\n",letterb[i]);
}
是的,把打印函数放在循环内部,如果像你这样写,即使没有下标越界,也得不到你想要的结果,因为只执行一次打印函数