Where do the results of an uninitialized array in C come from? Are they randomly assigned values or it's just previous values that are stored in the memory?
#include <stdio.h>
int main (void)
{
    int values[10];
    int index; 
    values[0] = 197;
    values[2] = -100;
    values[5] = 350;
    values[3] = values[0] + values[5];
    values[9] = values[5] / 10;
    --values[2];
    for ( index = 0; index < 10; index++ )
        printf ("values[%i] = %i\n", index, values[index]);
    return 0; 
}
and the output:
$ ./a.exe
values[0] = 197
values[1] = 0
values[2] = -101
values[3] = 547
values[4] = 8
values[5] = 350
values[6] = 51
values[7] = 0
values[8] = 44045216
values[9] = 35
 
     
     
     
    