我在许多页面上寻找我的问题的答案,但我找不到它。
在这种情况下,我们定义变量并在每个循环中重新启动它:
while(1)
int k = 7;
在这种情况下,我们在循环之前定义变量,并在每个循环中重新启动它。
int k;
while(1)
k = 7;
使用这两种方法有什么优点或缺点?或者它可能没有什么区别?
答案 0 :(得分:3)
差异在于变量的范围。
在第一种情况下,while
循环结束后,无法访问变量k
。
在第二种情况下,变量k
可以从while
循环中访问。
在这两种情况下,变量都在堆栈上定义(或者TartanLlama指出,它们可以在寄存器中分配),因此在性能方面没有区别。
但是,在while
循环永远不会结束的情况下,您使用的示例是错误的。我猜这只是一段虚拟代码来解释这种情况。
答案 1 :(得分:3)
这取决于你的逻辑。如果你需要循环外的变量(例如,检查循环后的值),那么你必须在循环外定义它;如果只在循环内使用它,那么你只能在内部定义它。
从分配的角度来看,在这两种情况下,变量很可能在堆栈上分配(即使在某些情况下编译器可能选择使用寄存器),因此性能没有差异。
答案 2 :(得分:2)
通常变量声明最接近到使用它的位置。如果变量仅在循环内使用,则在循环内声明它。