c++ - 关于重新定义的琐碎问题

标签 c++ definition

为什么不允许这样做:

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/

相关文章:

c++ - 有关解决此图像处理挑战的指示?

java - 共享一些公共(public)处理链的不同处理方法的设计模式

c++ - 禁用赋值运算符优化的 GCC 选项是什么

c++ - Linux C++ : Linker is outputting strange errors

c++ - 车钩运动功能未发现中断

assembly - FWORD中的F代表什么?

.NET Threadpool 工作线程和异步 IO 线程

c - 最佳 C 结构定义

java - 如果它的参数称为尾递归,是否有一个方法调用?

c - c中的类型声明和声明结构