c - Q对 double 组进行排序

标签 c double qsort

我是使用 qsort 的新手,我正在尝试对预定义的 double 组进行 qsort,不幸的是,在使用 qsort 对数组进行排序后,我收到的结果全是 0。我完全迷失了,任何建议将不胜感激。这是我用来对这个 double 组进行排序的代码。

static int compare (const void * a, const void * b){
    if (*(const double*)a > *(const double*)b) return 1;
    else if (*(const double*)a < *(const double*)b) return -1;
    else return 0;  
}

double stuff[] = {255, 1, 5, 39.0};
qsort(stuff, 4, sizeof(double), compare);
int i;
for(i = 0; i < 4; i++){
    printf("%d %s", stuff[i], " ");
}

最佳答案

您的问题是您使用 printf() 函数打印结果的方式。要打印 double 值,您需要使用 %f,如下所示:

printf("%f ", stuff[i]);

此外,旁注:您的比较函数中不需要这些 else 语句,因为一旦条件评估为 true,它将返回该函数。

关于c - Q对 double 组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907621/

相关文章:

c - 在 C 中搜索整数数组中的最大数字

java - Oracle JDBC : underflow in double

c - 如何在C语言的数组结构中使用qsort()

c - 使用后递增运算符的数组地址有什么问题?

c++ - 将自定义标签添加到 TIFF 文件

c - 为什么我的算术平均函数总是返回 0?

java - 如何在 Java 中获取 10 的幂的双倍指数?

java - 格式化 double 型,左侧和右侧均加零

c - c 中的段错误(核心转储)

c - 用 C qsort() 排序结构