比较C函数中的三个浮点
我用C写了这篇文章,试图为get_extreme获取一个最大值,但它不会在编译器中返回结果 它应该返回最大浮点值,或者如果最大值是全部三个,则返回该结果比较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
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;
}