1.使用标准库快排函数时浮点数的比较
//错误样例
int Mycmp(const void *a, const void *b)
{
return *(double *)a - *(double *)b;
}
//正确样例
int Mycmp(const void *a, const void *b)
{
if (*(double *)a > *(double *)b)
{
return 1;
}
return -1;
}
解释:标准库里的快排函数中的自定义比较函数的返回值类型为int。错误样例中的函数定义返回类型为int,而实际返回类型为double,这样会造成将double类型的数据赋值给int类型的数据的效果,也就是数据丢失。浮点型赋值给整型时小数位的数据会丢失并且不会进行四舍五入,所以0.9赋值给int类型的数据时int类型得到的值为0。
2.使用if语句进行变量值的判断
//错