有几种明显的使用方法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)
我倾向于使用前者,更多的是出于审美原因。是否有任何技术上的原因偏爱其中一个?
hypot在1999年的语言修订版中引入C 的函数,在另一方作为参数的情况下,计算了直角三角形的斜边,但要注意避免因天真实现而导致的上下溢.
double hypot(double a, double b)
{
return sqrt(a*a + b*b);
}
Run Code Online (Sandbox Code Playgroud)
我发现自己需要伴侣功能:给定一个边和三角形的斜边,找到第三面(避免在/溢出下).我可以想到几种方法来做到这一点,但想知道是否存在现有的"最佳实践"?
我的目标是Python,但实际上我正在寻找算法指针.