小编jjg*_*jjg的帖子

qsort:转换比较器函数本身还是比较器函数体中的参数?

有几种明显的使用方法qsort:在比较器中强制转换:

int cmp(const void *v1, const void *v2) 
{
    const double *d1 = v1, *d2 = v2;
    ?
}

qsort(p, n, sizeof(double), cmp);
Run Code Online (Sandbox Code Playgroud)

或投射比较器:

int cmp(const double *d1, const double *d2) 
{
    ?
}

qsort(p, n, sizeof(double), (int (*)(const void *, const void *))cmp);
Run Code Online (Sandbox Code Playgroud)

我倾向于使用前者,更多的是出于审美原因。是否有任何技术上的原因偏爱其中一个?

c qsort

35
推荐指数
3
解决办法
1062
查看次数

同伴到hypot()

hypot在1999年的语言修订版中引入C 的函数,在另一方作为参数的情况下,计算了直角三角形的斜边,但要注意避免因天真实现而导致的上下溢.

double hypot(double a, double b)
{
  return sqrt(a*a + b*b);
}
Run Code Online (Sandbox Code Playgroud)

我发现自己需要伴侣功能:给定一个边和三角形的斜边,找到第三面(避免在/溢出下).我可以想到几种方法来做到这一点,但想知道是否存在现有的"最佳实践"?

我的目标是Python,但实际上我正在寻找算法指针.


谢谢你的回复.如果有人有兴趣的结果,我的C99实现可以发现这里和Python版本在这里,部分的假设项目.

c algorithm geometry

8
推荐指数
1
解决办法
231
查看次数

标签 统计

c ×2

algorithm ×1

geometry ×1

qsort ×1