【发布时间】:2013-04-03 05:29:36
【问题描述】:
以下是我的代码,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
虽然它应该与输入相同。有人可以解释一下为什么会这样以及我该如何纠正吗?
【问题讨论】:
-
我不敢相信。一个完全独立、可编译的示例!先生,您应该为此获得勋章! +1,如果可以的话,还有更多。
-
好点子,@DevSolar,我们应该奖励这样的问题。