C语言问题,不太明白这个怎么运行的,求解释

#include<stdio.h>
int main(void)
{
int a=1,c=2,b[5]={0},i;
printf("%p,%p,%p\n",b,&c,&a);
for(i=0;i<=8;i++)
{
b[i]=i;
printf("%d ",b[i]);
}
printf("\nc=%d,a=%d,i=%d\n",c,a,i);
return 0;
}

为什么打印出来的a变成了6,c变成了5?求解释。

我运行的结果和你不一样

img

因为b是长度为5,但是i一直到8,内存越界了,所以可能会修改a c 的值,但是修改的结果是无法预测的,所以我和你运行结果不同

望采纳,谢谢