C 平均数的计算方法得到了很高的结果。我不知道';我不明白为什么?

C 平均数的计算方法得到了很高的结果。我不知道';我不明白为什么?,c,undefined-behavior,C,Undefined Behavior,我试图得到一个数组的平均数,但为了使其正确,输出值太高了。我做错了什么 int count(int arr[]){ int sum; //Average for(int i=0;i<100; i++) sum = sum + arr[i]; printf("Average:%f \n", sum/100); } int main() { int array[100]; //RANDOM NUMBERS 0-900 count(arr

我试图得到一个数组的平均数,但为了使其正确,输出值太高了。我做错了什么

int count(int arr[]){

int sum;

    //Average
    for(int i=0;i<100; i++)
        sum = sum + arr[i];

    printf("Average:%f \n", sum/100);

}
int main()
{
    int array[100]; //RANDOM NUMBERS 0-900

count(array);

 return 0;
}
int计数(int arr[]{
整数和;
//平均值

对于(int i=0;i),在使用前,需要初始化<代码>和> />代码。C或C++在自动存储持续时间的情况下不会自动为您做这件事。它需要“时间”,而在C或C++中,您不需要支付您不需要的东西。否则,您将获得垃圾值。(不管它存储在那个内存地址上的是什么,从技术上讲,使用未初始化的变量是未定义的行为,除非在赋值中)

您还需要初始化数组,如

int arr[100]{}; // C++11 or later

然后用值填充它。不要把垃圾值看作“随机数”,因为你再次遇到未定义的行为,程序不是完全安全的。

< P>未定义行为(UB):

以上使用了<代码>和>代码>,未初始化,是UB读取C和C++中未初始化变量的值。< /P>
实际上,给定您的代码,它甚至再次是UB,因为两个数组值
arr[i]
都未初始化。

sum
包含
垃圾值
。请初始化变量sum
在此处输入code
。 要在更新
sum
之前验证是否可以打印,请尝试以下操作:

int count(int arr[]){

int sum = 0; // <==================== initialize to zero

    //Average
    for(int i=0;i<100; i++)
        sum = sum + arr[i];

    printf("Average:%f \n", sum/100);

}
int main()
{
    int array[100]; //RANDOM NUMBERS 0-900

count(array);

 return 0;
}
int计数(int arr[]{

int sum=0;//啊,谢谢!这总是很容易的事,我只是忘记了哈,
随机数
…不……我只是没有发布随机函数xD
sum = sum + arr[i];
int count(int arr[]){

int sum = 0; // <==================== initialize to zero

    //Average
    for(int i=0;i<100; i++)
        sum = sum + arr[i];

    printf("Average:%f \n", sum/100);

}
int main()
{
    int array[100]; //RANDOM NUMBERS 0-900

count(array);

 return 0;
}