У меня только что был экзамен в моем классе сегодня - чтение кода C и ввода, и требуемый ответ был тем, что будет отображаться на экране, если программа действительно работает. Один из вопросов, объявленных a[4][4] как глобальная переменная и в точке этой программы, пытается получить доступ к a[27][27], поэтому я ответил на что-то вроде " "Доступ к массиву за пределами его границ" это поведение undefined, но учитель сказал, что a[27][27] будет иметь значение 0.
Впоследствии я попробовал некоторый код, чтобы проверить, истинна ли или нет всякая неинициализированная golbal-переменная в значение 0. Ну, это правда.
Итак, теперь мой вопрос:
- Похоже, какая-то дополнительная память была очищена и зарезервирована для запуска кода. Сколько памяти зарезервировано? Почему компилятор резервирует больше памяти, чем должен, и для чего он нужен?
 -  Будет ли 
a[27][27]быть0для всей среды? 
Изменить:
В этом коде a[4][4] объявлена глобальная переменная  только, а в main() есть еще несколько локальных.
Я попробовал этот код снова в DevС++. Все они 0. Но это не так в VSE, в котором наибольшее значение 0, но некоторые из них имеют случайное значение, как указал Vyktor.