我有一个函数来计算数组中偶数的算术平均值。函数返回不是预期的值
int func(int *x, int length)
{
float even_sum = 0;
int even_num;
int i;
float result;
for (i = 0; i<length; i++)
{
if (x[i] % 2 == 0)
{
even_sum = even_sum + x[i];
even_num++;
}
}
result = even_sum/even_num;
return result;
}
给人一种阵列1 2 2 1
我希望收到2为平均,但我不断收到0的结果。我的代码中的错误在哪里?
你用什么编译器没有提醒你使用未初始化的变量?或者,你为什么忽略编译器提供的宝贵警告?如果人们只是注意编译器警告,那么堆栈溢出的所有C语言问题中的很大一部分可以被消除。 –
http://ideone.com/J02bRM – BLUEPIXY
该函数的行为是未定义的,因为'even_num'在检索其值之前从未初始化过。 – Peter