【问题标题】:Definition of variable inside loop [duplicate]循环内变量的定义[重复]
【发布时间】:2015-11-19 11:22:47
【问题描述】:

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

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

while(1)
int k = 7;

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

int k;
while(1)
k = 7;

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

【问题讨论】:

  • 真奇怪,我刚读了一本主人公叫阿格涅斯卡的小说。娜奥米·诺维克连根拔起。它设置在另一个宇宙波兰。纳兹德罗伊 :)
  • @TomZych 哇!听起来不错。我会在波兰书店或 ebay 上找到它。 Dziekuje :)

标签: c++ c loops


【解决方案1】:

区别在于变量的范围。

第一种情况,一旦while循环结束,变量k就不能被访问了。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      通常变量被声明为最接近它被使用的地方。如果变量只在循环内使用,则在循环内声明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-02
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 2018-05-17
        • 2014-06-15
        • 1970-01-01
        相关资源
        最近更新 更多