相关疑难解决方法(0)

如何比较长双打与qsort和NaN?

如何长的双打比较qsort(),并就不是一个数

在排序可能包含非数字的数组时,我想将所有这些放在NAN已排序数组的一端.


qsort() 对比较功能施加了一些限制.

如果第一个参数被认为分别小于,等于或大于第二个参数,则该函数应返回小于,等于或大于零的整数.
C11dr§7.22.5.23

当相同的对象...不止一次传递给比较函数时,结果应该彼此一致.也就是说,因为qsort它们应该在数组上定义一个总排序,......同一个对象应始终以相同的方式与密钥进行比较.
§7.22.54

a > ba <= b或如果a不是数字或b不是数字时,则为false .所以a > b是不一样的!(a <= b),因为他们有相反的结果,如果他们中的一个是NaN.

如果比较函数使用return (a > b) - (a < b);,代码将返回0,如果一个或两个 a或是bNaN.数组不会按照需要排序,它会丢失总排序要求.

long double使用分类功能,如当这种方式是很重要的int isnan(real-floating x);int isfinite(real-floating x);.我知道isfinite( finite_long_double_more_than_DBL_MAX)可能会回归虚假.所以我担心isnan(some_long_double)发生什么意外的事情.


我试过以下.它显然按需要排序.

子问题:是否compare() …

c qsort

6
推荐指数
1
解决办法
198
查看次数

标签 统计

c ×1

qsort ×1