我正在制作的函数应该返回到向量中的最大值,我很难过为什么它不起作用,这里是代码:
float max(float vec[], int len) {
int i;
float max;
for (i = 0; i < len; i++) {
if (vec[i] > max) {
max = vec[i];
}
}
return max;
}
答案 0 :(得分:1)
max
未初始化,使用未初始化的变量会导致未定义的行为。
float max = vec[0];// Initialize max before using it
答案 1 :(得分:0)
您没有初始化局部变量
float max;
您可以通过以下方式执行此操作
float max = vec[0];
当第二个参数等于0或为负值时,该函数也有问题。
一般方法是返回最大元素的索引,并在调用者中将返回的索引与第二个参数的值进行比较。如果它们相等则数组为空。否则索引指向最大元素。
所以函数可以用以下方式编写
size_t max_element( const float vec[], size_t len )
{
size_t max = 0;
size_t i = 1;
for ( ; i < len; i++ )
{
if ( vec[max] < vec[i] ) max = i;
}
return max;
}
并且在调用者中你可以写
float vec[] = { /* some initializers */ };
size_t max = max_element( vec, sizeof( vec ) / sizeof( *vec ) );
printf( "The maximum value is &f for element with index %zu\n", vec[max], max );