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;
}