问个C语言for循环的问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 20:21:36
main()
{
int a[3]={1,2,3};
int i;
for(i=0;i<=2;i++)
a[i]=i;
printf("%d",a[i]);
getch();
}
为啥我的这个程序输出的会是-34呢,请详细地解答一下,谢谢

我觉得应该是这样的,for循环结束之后i是等于3的,而a[3]是没有赋值的,所以系统输出一个随几数,刚才我运行了一下,输出的就是-18

注意,a[3]是从a[0]开始的,3其实是0.1.2

另外{}也有问题

for(i=0;i<=2;i++)
{
a[i]=i;
printf("%d",a[i]);
getch();
}

数组越界知道不?
main()
{
int a[3]={1,2,3};
int i;
for(i=0;i<=2;i++)
a[i]=i;
printf("%d",a[i]); /*这里i=3,a[3]就是越界了*/
getch();
}

修改
main()
{
int a[3]={1,2,3};
int i;
for(i=0;i<=2;i++)
{
a[i]=i;
printf("%d",a[i]);
}
getch();
}

for(i=0;i<=2;i++)
a[i]=i;
运行后i=3
a[3]=?
越界,-34

注意你的输入语句是:
printf("%d",a[i]); 是打印的a[3]指向的这段内存,而这段内存区域你并没有指定任何初始值。