Значение переменной будет 0 до того, как будет выполнен любой ваш код.Как это происходит, во многом зависит от системы;Один из типичных подходов - это чтение образа даты с диска при загрузке программы.Формально у вас нулевая инициализация, за которой следует статическая инициализация, но соответствующая реализация никак не может сказать, и я никогда не слышал о реализации, которая разделяет их.
Под Unix, по крайней мере, в его старшейи более традиционные версии, неинициализированные статические переменные были помещены в сегмент bs, статически инициализированные переменные в сегмент данных.Исполняемый файл на диске содержал изображение сегмента данных, которое было скопировано в память;все байты в сегменте bs были установлены на 0. На современной машине с выгружаемой виртуальной памятью я ожидал бы аналогичного поведения с той разницей, что инициализация будет отложена до первого доступа к странице.
Я был бы очень удивлен, если бы Windows обрабатывал это по-другому (за исключением имен сегментов).