为什么不允许这样做:
int a = 0;
int a = 0;
但这是:
for (int i = 0; i < 2; ++i)
{
int a = 0;
}
据我所知,for 循环中的代码将执行两次而实际上并没有超出其范围,因此定义两次 a 也应该是错误的。
期待您的回答
谢谢。
最佳答案
for 循环中只有一个定义。变量被创建、使用,然后在右花括号处销毁,并在下一个循环迭代中重新创建。定义了一个变量。
这有点类似于函数中定义的变量。函数可以调用多次,但变量是一个。事实上,对于函数,可以递归调用函数,并且会有多个变量存在,但对于函数的每次执行,都定义了一个变量。
编辑:请注意,正如@xtofl 正确指出的那样,i
的生命周期是整个 for 循环,而 a
的生命周期是 curly 中的 block 大括号:for 循环的单次迭代。
关于c++ - 关于重新定义的琐碎问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2712560/