数组在内存中是顺序存储的,a[10]虽然越界,但是a[10]是有值的,你的程序升序排序能正确执行,你把if里面的>改成<,降序排序,程序就会出错,这是因为你的a[10]刚好是一个大数,a[9]>a[10]不成立,a[10]就没意义了。要让你的程序无论升序还是降序都正确执行,改成for(i=0;i<9;i++)for(j=i;j<10-i-1;j++)就行了