C 查找数组中的最大浮点值时出现问题

C 查找数组中的最大浮点值时出现问题,c,floating-point,C,Floating Point,当我试图找到数组的最大浮点值时,我在C语言中遇到了一个问题,但是我的最大int值工作得很好。我想我可能会超过数组长度,但我不认为这是可能的 int largestInt(int array[], int length){ int max = array[0]; int i; for( i=1; i<length; i++){ if(array[i] > max){ max = array[i];

当我试图找到数组的最大浮点值时,我在C语言中遇到了一个问题,但是我的最大int值工作得很好。我想我可能会超过数组长度,但我不认为这是可能的

int largestInt(int array[], int length){
    int max = array[0];
    int i;

    for( i=1; i<length; i++){
         if(array[i] > max){
               max = array[i];
         }
    }

    return max;
}
int-largestInt(int数组[],int-length){
int max=数组[0];
int i;
对于(i=1;i最大值){
max=数组[i];
}
}
返回最大值;
}
上面的代码适用于int,但是如果我将其更改为使用浮点数,如下所示

float largestFloat(float array[], int length){
    float max = array[0];
    int i;

    for( i=1; i<length; i++){
         if(array[i] > max){
               max = array[i];
         }
    }

    return max;
} 
float largestFloat(浮点数组[],整数长度){
浮点最大值=数组[0];
int i;
对于(i=1;i最大值){
max=数组[i];
}
}
返回最大值;
} 
有时它会给我正确的答案,有时它只会给我一个巨大的数字,甚至在原始数组中也不会。这让我相信我已经超过了数组的长度

float f[15] = {9.5, 45.64, 313.11, 113.89, 81.56, 250.00, 11.9, 469.98, 313.11, 4.68, 34.33, 8013.55, -10.15, 11.5, 88.0} <-- filled with 15 values
largestFloat(f,15);

float f[15]={9.5,45.64,313.11,113.89,81.56,250.00,11.9,469.98,313.11,4.68,34.33,8013.55,-10.15,11.5,88.0}问题是找到最大的
float
,然后返回
int

int largestFloat(float array[], int length){     // return type is int
    float max = array[0];                        // max is float
    int i;

    for( i=1; i<length; i++){
         if(array[i] > max){
               max = array[i];
         }
    }

    return max;
} 
int-largestFloat(浮点数组[],int-length){//返回类型为int
float max=数组[0];//max是float
int i;
对于(i=1;i最大值){
max=数组[i];
}
}
返回最大值;
} 

没有看到完整的示例,我不得不说您是正确的。数组大小可能是错误的。首先修复返回类型:

float largestFloat(float array[], int length){
接下来,您可能希望添加一个针对空数组的保护,因为这将自动覆盖流抓取数组[0]:

if (length < 1) return 0;
if(长度<1)返回0;
其余的largestFloat()是好的

然后致电:

float f[15] = {2.3 ... 102} <-- filled with 15 values
size_t length = sizeof f / sizeof f[0];
float f_max = largestFloat(f, length);
printf("max=%g, length=%d\n", f_max, length);

float f[15]={2.3…102}您需要向我们展示调用
largestFloat()函数的代码。问题可能存在。您确定每次调用
largestFloat
时都正确设置了
length
?你有没有试过在附加了调试器的情况下单步执行?我制作了一个数组“float f[15];”并用值填充它。然后我运行“largestFloat(f,15);”而不是传递长度,您可以确定它,以确保这不是中的问题[向我们展示一个说明问题的函数。它需要包括您的
largestFloat
函数和一个简短的
main
函数,该函数创建数组,调用
largestFloat
,并打印结果。我可以复制、粘贴并在自己的系统上运行,并且(理想情况下)获得与您相同的输出。这当然没有帮助,但它应该只是将浮点设置为最低,而不是返回数组中显然不存在的内容。是的,这是我的一个输入错误。Sorry@wzsun:将您的代码复制并粘贴到问题中,而不是重新键入。如果您的返回类型错误,则在重新键入代码时可能会出现其他错误。由于这个原因,复制/粘贴远远优于重写。这是一个C问题,而不是C++。