以下是我的代码和 Qsort 产生奇怪的结果:
#include <stdio.h>
#include <stdlib.h>
char values[] = { 0x02,0x04,0x0b,0x16,0x24,0x30,0x48,0x6c};
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int main ()
{
int i;
qsort (values, 8, sizeof(char), compare);
for (i = 0; i < 8; i++)
{
printf ("%0x ",values[ i ]);
}
return 0;
}
这个程序的输出是:
2 6c 48 30 24 4 b 16
尽管它应该与输入相同。有人可以解释为什么会这样以及我该如何纠正吗?