我刚开始学习c ++,我写了一段代码来查找带有int值的最小值,现在我必须使用double值来做,但是我错了!请让我知道如何解决!
select *
from generate_anagrams('signature');
答案 0 :(得分:1)
您的函数缺少显式的return
值(您也无法在同一范围内更改变量的类型,因此编译器在到达double num1,num2;
时会抱怨)。
至少需要写
double findminval(double num1, double num2){
double minval;
if (num1 < num2){
minval = num1;
} else {
minval = num2;
}
return minval;
}
尽管您可以简化此操作,但代价是难以调试,
double findminval(double num1, double num2){
if (num1 < num2){
return num1;
} else {
return num2;
}
}
甚至
double findminval (double num1, double num2){
return num1 < num2 ? num1 : num2;
}
请注意,您可以模板化,这样就不需要两个功能:
template<typename Y> Y findminval(const Y& num1, const Y& num2){
return num1 < num2 ? num1 : num2;
}
请注意,我现在通过const
引用来消除可能的值副本。现在您看到我们在std::min
上绊脚石。最后要考虑的一点是:“礼节”是在参数相等的情况下返回第一个参数。这是为了保留浮点的符号零,甚至是1的补码系统中的整数。因此,除了使用std::min
之外,这可能是最好的选择:
template<typename Y> Y findminval(const Y& num1, const Y& num2){
return num1 <= num2 ? num1 : num2;
}