gpt4 book ai didi

c - 当我将 qsort 用于 double 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:14 25 4
gpt4 key购买 nike

我的英语很差,所以如果有任何错误请原谅我。谢谢!

我在使用 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);
}

为什么会这样?这两个功能有什么不同吗?或者代码的另一部分可能是错误的?

最佳答案

比较函数必须返回小于零、等于零或大于零的整数,具体取决于您希望如何对两个项目进行排序。

在您的第一个示例中,您返回 > 操作的结果。这是 0 或 1。

关于c - 当我将 qsort 用于 double 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com