int a[10];
int i = 0;
while (i < 10)
{
i++;
a[i] = i;
}
while (i < 10)
{
i++;
printf("%d\n", a[i]);
}
}
提示我引发异常
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
求解答
1.i++应该放到a[i]=i的下一行,否则i不变成从1开始了,最后一个数是10,越界了
你也可以直接写a[i]=i++
2.第二个while循环之前,应该将i归零,否则循环根本进不去
-=-==-
for(a;b;c)
a在初始化时执行一次,b每次循环之前执行,c每次循环之后执行
那么你要用while代替for(i=0;i<10;i++),就应该把i=0放到while前面,i++放到循环的最后一行,才是等价的
5、6行交换顺序
int a[10];
int i = 0;
while (i < 10)
{
a[i] = i;
i++;
}
i = 0;
while (i < 10)
{
printf("%d\n", a[i]);
i++;
}
}
你需要先赋值再下标+1,所以i++;需要放在循环中的最末尾一行。
你现在的情况就是先i++;,就会导致缺少第一个元素0,从第二个元素1开始了