【发布时间】:2018-10-13 15:21:51
【问题描述】:
来自这个question,为什么这个循环仍然运行5次?
for(int i = 0; i < 5; i++)
{
int i = 10;
printf("%d\n", i);
}
我猜想当我们重新声明i 时,当i 在for 循环中被评估时,它会在第一个循环之后停止循环。就好像我们刚刚重新分配了i = 10;。但是,就好像正在创建一个新变量,但循环仍然使用前一个变量。这是如何以及为什么会发生的?
【问题讨论】:
-
i是在循环范围内创建的。在你的情况下,它被放在堆栈上。在循环结束时,堆栈展开并被移除。然后,您再次开始循环并在堆栈上再次创建一个名为i的新变量。 -
研究一下复制品:它都在里面。请注意,您提供的代码不是有效的 C++。