Why C uninitialized global variables have an initial value of zero
https://utcc.utoronto.ca/~cks/space/blog/programming/CWhyGlobalsZeroDefault [utcc.utoronto.ca]
2019-01-17 23:20
One answer is certainly ‘because the ANSI C standard says that global variables behave that way’, and in some ways this is the right answer (but we’ll get to that). Another answer is ‘because C was documented to behave that way in “The C Programming Language” and so ANSI C had no choice but to adopt that behavior’. But the real answer is that C behaves this way because it was the most straightforward way for it to behave in Unix on PDP-11s, which was its original home.