比较C函数中的三个浮点

比较C函数中的三个浮点,c,function,if-statement,max,C,Function,If Statement,Max,我用C写了这篇文章,试图为get_extreme获取一个最大值,但它不会在编译器中返回结果 它应该返回最大浮点值,或者如果最大值是全部三个,则返回该结果 int get_extreme(float num1, float num2, float num3) { /* local variable declaration */ int result; if (num1 == num2 && num2 == num3 ){ result = num1; } else if

我用C写了这篇文章,试图为get_extreme获取一个最大值,但它不会在编译器中返回结果

它应该返回最大浮点值,或者如果最大值是全部三个,则返回该结果

int get_extreme(float num1, float num2, float num3) {

/* local variable declaration */
int result;

if (num1 == num2 && num2 == num3 ){
    result = num1;
}
else if (num1 > num2 && num2 > num3){
    result = num1;}
else if (num2 > num3 && num3 > num1){
    result = num2;}
else {
    result = num3;}

return result;
}

您已将结果定义为
int
。还需要返回值。但是,当您为结果变量赋值时,您会指定一个浮点

你的逻辑似乎是错误的。例如,如果
num1
大于
num2
num3
大于
num2
num1
大于
num3
,则返回
num3
。 将条件更改为:

if (num1>=num2&& num1>=num3) 
result=num1;
else if (num2>=num1&& num2>=num3) 
result=num2;
else
result=num3;

如果它应该返回一个浮点值,为什么将结果定义为
int
?为什么函数返回一个
int
?那么,对于您尝试过的输入,它返回的是什么呢?好的,所以我修正了它,但是现在它返回的结果是荒谬的。这是因为您的算法是完全错误的。你只考虑了两种可能的排列。总共有6个。没有足够的排列。显然,有6种可能的比较需要进行。这个函数肯定可以正常工作。你试过了吗?你有一个不必要的条件。第一个。如果它们都等于最后一个,则返回的结果很好。仍然抛出奇怪的数字…嗯,你能写出产生错误结果的整个函数吗?
float get_extreme(float num1, float num2, float num3) {

    /* local variable declaration */
    float result;

    if (num1 == num2 && num2 == num3) {
       result = num1;
    } else if (num1 > num2 && num1 > num3) {
       result = num1;
    } else if (num2 > num3 && num2 > num1) {
       result = num2;
    } else {
       result = num3;
    }

    return result;
 }