【问题标题】:How does this for-loop work? [closed]这个 for 循环是如何工作的? [关闭]
【发布时间】:2015-01-23 02:47:03
【问题描述】:
for (i=0;i<10,i++;) { cout<<i<<endl;}

这将编译,我将在 1 结束。

谁能告诉我这是如何工作的以及为什么这段代码会在 i=1 而不是 10 处停止?

【问题讨论】:

  • 改变 i
  • 我讨厌谷歌宕机。您是否尝试过使用 bing 查找逗号运算符的作用?
  • 或者使用调试器单步调试代码看看发生了什么?
  • 调试器将无济于事,因为我将在第一次迭代后增加到 1,并且不会通过第二次迭代。我不知道为什么它不会通过第二个?

标签: c++ for-loop


【解决方案1】:

这里的简单答案是您的代码中有错误。也就是说,让我解释一下这里发生了什么。

在 C++ 中,for 语句由三个用分号分隔的不同表达式组成。

for (expr1 ; expr2 ; expr3)

expr1 在循环开始之前执行。它通常由变量声明或初始化组成。在你的循环中是“i = 0”

expr2 是条件表达式。执行此表达式以确定循环体是否应该运行。如果此表达式的计算结果为真,则循环的主体执行。每次循环执行时都会检查这一点。在您的循环中,这是“i

expr3 通常用于增量。它在循环体之后执行,就在 expr2 重新执行之前。

所以...回到 expr2。

在 C++ 中,逗号运算符执行左边的表达式,但返回右边的值。在这种情况下,这基本上意味着您的条件值是“i++”,这是 i 在它增加之前的值(“++i”将是之后的值)。这意味着您的条件是“0”,但循环后 i 的值是“1”。

【讨论】:

  • 这非常清楚!非常感谢!
【解决方案2】:

通过模拟,如果你想得到输出 10,for 循环格式应该是 for (i =0; i

因此,您的语法适用于 i=0 add 1 where i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多