我试着去了解马洛克和卡拉克,所以我看了一些新沃斯顿关于这个主题的视频。但出于某种原因,我得到了一个非常奇怪的输出,让我展示代码开始。
#include <stdio.h>
#include <stdlib.h>
int
main()
{
int i, howMany;
int total;
float average = 0.0;
int * pointsArray;
printf("How many do you want to store: \n");
scanf("%d", &howMany);
pointsArray = (int *) malloc(howMany * sizeof(int));
printf("Enter your numbers: \n");
for(i = 0; i < howMany; i++)
{
scanf("%d", &pointsArray[i]);
total += pointsArray[i];
}
average = (float)total / (float)howMany;
printf("Average is: %f\n", average);
free(pointsArray);
return 0;
}
它应该计算你输入的数字的平均值。问题是变量“total”的值由于某种原因得到的起始值为4195808。首先,我对newboston的代码做了一个自己的“解释”,但是在我得到这个错误之后,我只是复制了它,但同样的问题仍然存在。为什么会这样?我找不到任何有类似问题的人的信息。
最佳答案
您没有初始化total
,因此该值未定义。一些编译器/运行时可能碰巧在堆栈上有0,而其他编译器/运行时可能有C运行时初始化留下的任意值。如果希望total
最初为零,请将其初始化为零:
int total = 0;
关于c - 4195808怎么处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40912457/