我试着去了解马洛克和卡拉克,所以我看了一些新沃斯顿关于这个主题的视频。但出于某种原因,我得到了一个非常奇怪的输出,让我展示代码开始。

#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/

10-11 18:30