3.6.2 / 1 говорит, что «Объекты со статической продолжительностью хранения (3.7.1) должны быть инициализированы нулями (8.5), прежде чем произойдет любая другая инициализация».
Так что вы правы, они не инициализируются по умолчанию. Но они инициализируются нулями, что на самом деле для int
это то же самое. Для типа класса это не обязательно одно и то же.
Тем не менее, я не обещаю, что поведение здесь просто в том, что порядок инициализации не определен, и, следовательно, одна переменная заканчивается как 10, а другая 20, но не определена, которая есть какая. Это может быть неопределенным по некоторым другим причинам, но я не могу думать ни о чем.