发现在C的最小(双)++

问题描述 投票:0回答:1

我刚开始学习C ++,我写了一个代码,以查找与INT值最小,现在我有双打,以做到这一点,我错了!请让我知道如何解决它!

#include <iostream>

using namespace std;


void findminval (double num1, double num2) {
double minval;
if (num1<num2){
    minval=num1;
} else {
    minval=num2;
}

}
void findminval (int num1, int num2) {
int minval;
if (num1<num2){
    minval=num1;
} else {
    minval=num2;
}

}

int main(int argc, char** argv) {
int num1,num2;
    cout<<"Enter Two Numbers"<<endl;
    cin>>num1>>num2;
    int minimumvalue = findminval(int num1,int num2);
    cout<<minimumvalue<<endl;

double num1,num2;
    cout<<"Enter Two Numbers"<<endl;
    cin>>num1>>num2;
    double minimumvalue = findminval(num1,num2);
    cout<<minimumvalue<<endl;
return 0;
}
c++ function double void minimum
1个回答
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;
}

请注意,然后,你可以templatise这个,所以你不需要两个功能:

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.