gpt4 book ai didi

c - qsort 比较器函数不会对整个数组进行排序(留下 1 个元素)

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:10 30 4
gpt4 key购买 nike

相关代码(索引为数组大小):

typedef struct elemento {
unsigned long linha;
unsigned long coluna;
double valor;
} elemento;

elemento Representados[MAXN];
qsort(Representados, index, sizeof(Representados[0]), lcomparator);

int lcomparator(const void *el1, const void *el2) {
int l1 = ((elemento *)el1)->linha;
int l2 = ((elemento *)el2)->linha;
int c1 = ((elemento *)el1)->coluna;
int c2 = ((elemento *)el2)->coluna;

if (l1 < l2) {
return -1;
}
else if (l1 == l2) {
if (c1 < c2) {
return -1;
}
else if (c1 == c2) {
return 0;
}
else if (c2 > c1) {
return 1;
}
}
else {
return 1;
}

}

gcc 还为 lcomparator 打印出“控制到达终点”警告,但我不明白我的函数怎么可能不返回任何内容。

最佳答案

else if (c2 > c1) {
return 1;
}

错了,应该是

else if (c1 > c2) {
return 1;
}

或更好

else {
return 1;
}

当然还有用unsigned long替换int

关于c - qsort 比较器函数不会对整个数组进行排序(留下 1 个元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50028900/

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