【问题标题】:Why does a for loop not reach the number set in the 2nd condition of the loop?为什么 for 循环没有达到循环第二个条件中设置的数字?
【发布时间】:2014-02-27 00:07:50
【问题描述】:

我不明白为什么在 for 循环中使用 int - 如果它被初始化为 0 并且您将循环设置为递增 int 以获得小于数字的整数 - 如果每次循环执行时输出整数- 它没有达到你在 for 循环中告诉它递增的数字。

为了更好地帮助您理解,我可能不会在这里非常清楚地表达自己,因此请通过示例查看以下链接:

http://codepad.org/doPC6kuI

链接中的输出是 0,1,2,3,4 - 我意识到它是 5 个整数,但 int i 从 0 开始但在输出之前递增,所以我不明白为什么第一个输出是 0 而不是1 变成 1,2,3,4,5。

我无法合理化或提出合乎逻辑的解释,这让我很恼火。

【问题讨论】:

  • 因为在循环体完成之前不会执行更新子句。操作顺序是 1. init,2. test(如果为 false,则中断),3. body,4. update,然后 goto (2)。如果在 for-construct 中未提供这些步骤,则将跳过任何这些步骤。
  • edit您的问题在这里而不是场外发布相关代码。这里提出的所有问题都应该是独立的,包括所有相关信息。将您的问题有意义的部分放在别处意味着如果由于某种原因无法使用场外位置,则您的问题不清楚。 (这在未来读者试图解决他们的问题的搜索中也没有用。)谢谢。 (顺便说一句,我没有否决你的问题。)

标签: c++ loops for-loop int increment


【解决方案1】:

您示例中的for 循环的工作原理如下:

  1. 初始化i = 0
  2. i < 5 为真时重复:
    1. 执行for循环体
    2. 递增i

条件在每次迭代开始时检查,增量发生在每次迭代结束时。

所以首先将i初始化为0,然后检查0 < 5,这很好,所以我们开始第一次迭代。在迭代结束时,i 递增到 1,然后它检查 1 < 5,然后我们开始第二次迭代,依此类推。在第 5 次迭代结束时,i 递增到 5,并检查 5 < 5,这不再是真的,因此不再发生迭代。因此,不会发生 i 具有值 5 的迭代。

【讨论】:

    【解决方案2】:

    你自己说的:

    你设置循环来增加整数小于一个数字的int

    如果你这样做,循环只会运行小于限制的值,而不是限制本身。计数器在每次循环之后检查条件之前递增;所以第一次迭代为 0,第二次迭代为 1,依此类推;然后条件在迭代之前停止它,当它是 5 时。

    如果你想包含限制,那么你会在它小于或等于限制时循环。

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 2019-12-23
      • 2013-12-12
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      相关资源
      最近更新 更多