Рассмотрим этот фрагмент программы C:
for(int i = 0; i < 5; i++)
{
int i = 10; // <- Note the local variable
printf("%d", i);
}
Он компилируется без какой-либо ошибки, и, когда он выполняется, он дает следующий результат:
1010101010
Но если я напишу аналогичный цикл в C++:
for(int i = 0; i < 5; i++)
{
int i = 10;
std::cout << i;
}
Ошибка компиляции с этой ошибкой:
prog.cc:7:13: error: redeclaration of 'int i'
int i = 10;
^
prog.cc:5:13: note: 'int i' previously declared here
for(int i = 0; i < 5; i++)
^
Почему это происходит?