[an error occurred while processing this directive]
|
уж они в таких, можно сказать фундаментальных, вещах допускают подобные вольности, то что уж ожидать от более глубоких? Хорошо, что хоть документировано.
Про Стандарт - Вам прямо пункт найти или Вы просто сомневаетесь? Если второе, то не сомневайтесь: есть совершенно четкое требование Стандарта, что все объекты с глобальным временем жизни (static storage duration) и с областью видимости (scope) на всю единицу компиляции должны быть проинициализированы до вызова main. Причем сначала производится статическая инициализация (т.е. обычные переменные), где переменные с инцизализатором инициализирутся значением этого инициализатора, а переменные без инициализатора - инициализируются нулем. Затем производится динамическая инициализация - т.е. вызов конструкторов объектов.
Статические объекты с областью видимости функция, где они объявлены, должны быть проинициализированы при первом входе в функцию до выполнения любого кода этой функции.
Автоматических (локальных) переменных все это не касается, т.ч. там при отсутствии инициализатора находится мусор.
Если желаете, могу поискать в Стандарте конкретные пункты. Но можете не сомневаться, этот вопрос несколько лет назад плотно вентилировался, т.ч. тут все вполне однозначно.
E-mail: info@telesys.ru