Salviati Salviati - 1 year ago 82
C Question

What is the deal with the number 4195808?

Trying to understand malloc and calloc, so I watched some of TheNewBoston's video about the subject. But for some reason I get a really strange output, let me show the code to start with.

#include <stdio.h>
#include <stdlib.h>

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


return 0;

It is supposed to calculate the mean value of the numbers you enter. The problem is that the value of the variable "total" get a start value of 4195808 for some reason. First I made an own "interpretation" of TheNewBoston's code, but after I got this error I just copied it but the same problem remains. Why does this happen? I can not find any info about anyone having a similar problem.

Answer Source

You didn't initialize total, so the value is undefined. Some compilers/runtimes might, by sheer coincidence, happen to have zero on the stack, others might have arbitrary values left behind by C runtime initialization there. If you want total to be initially zero, initialize it to zero:

int total = 0;
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download