#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