变量内循环的定义

时间:2015-11-19 11:22:48

标签: c++ c loops

我在许多页面上寻找我的问题的答案,但我找不到它。

在这种情况下,我们定义变量并在每个循环中重新启动它:

while(1)
int k = 7;

在这种情况下,我们在循环之前定义变量,并在每个循环中重新启动它。

int k;
while(1)
k = 7;

使用这两种方法有什么优点或缺点?或者它可能没有什么区别?

3 个答案:

答案 0 :(得分:3)

差异在于变量的范围。

在第一种情况下,while循环结束后,无法访问变量k

在第二种情况下,变量k可以从while循环中访问。

在这两种情况下,变量都在堆栈上定义(或者TartanLlama指出,它们可以在寄存器中分配),因此在性能方面没有区别。

但是,在while循环永远不会结束的情况下,您使用的示例是错误的。我猜这只是一段虚拟代码来解释这种情况。

答案 1 :(得分:3)

这取决于你的逻辑。如果你需要循环外的变量(例如,检查循环后的值),那么你必须在循环外定义它;如果只在循环内使用它,那么你只能在内部定义它。

从分配的角度来看,在这两种情况下,变量很可能在堆栈上分配(即使在某些情况下编译器可能选择使用寄存器),因此性能没有差异。

答案 2 :(得分:2)

通常变量声明最接近到使用它的位置。如果变量仅在循环内使用,则在循环内声明它。