我的英语很差,所以如果有任何错误,请原谅我。谢谢 !
当我使用 qsort 对这个结构进行排序时,我遇到了这个问题:
typedef struct
{
double cost,earn;
}ac;
我想这样排序:
int cmp(const void *a,const void *b)
{
ac this_a=*(ac*)a;
ac this_b=*(ac*)b;
return (this_b.earn/this_b.cost-this_a.earn/this_a.cost)>0.0;
}
但它没有用。当我改成这个时,它起作用了:
int cmp(const void *a,const void *b)
{
ac this_a=*(ac*)a;
ac this_b=*(ac*)b;
return (this_a.cost*this_b.earn-this_a.earn*this_b.cost);
}
为什么会发生这种情况?这两个功能之间有什么不同吗?或者代码的另一部分可能是错误的?