#include<stdio.h>
int main()
{
int a[6]={2,5,4,6,1,3};
int j,key,i,k;
for(j=1;j<6;++j)
{
key=a[j];
i=j-1;
while((i>=0)&&(a[i]>key))
{
a[i+i]=a[i];
i=i-1;
}
a[i+1]=key;
}
for(i=0;i<6;i++)
printf("%d\n",a[i]);
}
当我计算自己我得到1,2,3,4,5,6 但输出是2,4,5,6,1,3。输出显示不同
我试了很难,但在这个请求中找不到错误,如果答案很简单,或者是我在编写代码时出错,请不要低估这个问题告诉我这是什么问题,可能是我最后一个问题堆栈溢出会在此之后阻止我。
'a [i + i]'访问数组越界并调用*未定义的行为*(同时''while循环的整个逻辑看起来很奇怪 - 它应该完成什么?) – UnholySheep
另请参见:不要低估你的问题通常会产生相反的效果。而你还没有表现出你的调试工作要么 – UnholySheep
我不是说不要downvote请告诉我的原因吧(我知道人做连我自己),请解释一下这个访问数组越界详细 – Charan2628