循环内变量的定义

Definition of variable inside loop

本文关键字:定义 变量 循环      更新时间:2023-10-16

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

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

while(1)
int k = 7;

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

int k;
while(1)
k = 7;

使用这两种方法有什么优点或缺点?或者也许这没什么区别?

区别在于变量的作用域。

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

在第二种情况下,可以在while循环之外访问变量k

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

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

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

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

通常情况下,变量被声明为最接近其使用位置的。如果变量仅在循环中使用,则在循环中声明它。