考虑一下C程序的片段:
for(int i = 0; i < 5; i++)
{
int i = 10; // <- Note the local variable
printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)
它编译没有任何错误,并在执行时,它提供以下输出:
1010101010
Run Code Online (Sandbox Code Playgroud)
但是如果我在C++中编写类似的循环:
for(int i = 0; i < 5; i++)
{
int i = 10;
std::cout << i;
}
Run Code Online (Sandbox Code Playgroud)
编译失败,出现此错误:
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++)
^
Run Code Online (Sandbox Code Playgroud)
为什么会这样?