int var = var
в main()
фактически не имеет доступа к var
в объеме файла.
В результате на самом деле не определено поведение, так как он пытается получить доступ к значению локального var
, который не был инициализирован. Таким образом, любой результат, который вы получаете (ноль, 42, переформатирование вашего жесткого диска), действительно.
Попробуйте создать свой код с помощью другого компилятора, и вы можете получить другой результат.
Из любопытства я скомпилировал, построил и выполнил тот же код (кроме добавления #include <stdio.h>
), и полученный результат был 41944322
. Компилятор моей текущей машины - gcc 4.8.1 (mingw).
локальное определение переопределяет внешний. Это в локальном масштабе. Как мог компилятор узнать, что это? –
Мне нужно задаться вопросом, как вы пропустили: *** «Предупреждение: переменная« var »не инициализируется при использовании в рамках собственной инициализации« ***. – user3386109
А также ** предупреждение: объявление затеняет переменную в глобальной области видимости **. –