为什么不允许这样做:
int a = 0;
int a = 0;
Run Code Online (Sandbox Code Playgroud)
但这是:
for (int i = 0; i < 2; ++i)
{
int a = 0;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,for循环中的代码将执行两次实际超出其范围,因此定义两次也应该是一个错误.
期待您的回答
谢谢.
for循环中有一个定义.变量在结束大括号中被创建,使用,然后被销毁,并在下一个循环迭代中重新创建.定义了一个变量.
这在某种程度上类似于函数中定义的变量.该函数可以多次调用,但变量是一.事实上,对于函数,函数可以递归调用,并且将有多个变量存活,但是对于函数的每次执行,都定义了一个变量.
编辑:注意,正如@xtofl正确指出的那样,生命周期i是整个for循环,而生命周期a是花括号中的块:for循环的单次迭代.