Ответ 1
Вы инициализируете i
самим. Оба i
в int i = i;
являются внутренними, а не внешними. Это undefined поведение, и вы можете получить 0
или что-либо.
Это правильный путь, если вы хотите назначить внешний i
внутреннему i
.
#include <iostream>
int i = 1;
int main()
{
int i = ::i;
std::cout << "i: " << i << "\n";
return 0;
}
Кстати, вы должны внимательно прочитать все предупреждения компилятора. Если вы это сделали, вы можете сами увидеть проблему:
Предупреждение 'i' используется неинициализированным в этой функции