【问题标题】:What's the difference between a while loop in one or two statements? [closed]一个或两个语句中的 while 循环有什么区别? [关闭]
【发布时间】:2020-12-28 11:00:59
【问题描述】:

我很困惑理解这两个循环及其结果之间的区别:

状态 1:

    int n = 10;
    while (n>0) {
        cout << n << ", " << --n;
    }

状态 2:

    int n = 10;
    while (n>0) {
        cout << n << ", ";
        --n;
    }

我不明白为什么要区分结果?

状态 1 显示:10、99、88、77、66、55、44、33、22、11、0

同时

状态 2 显示:10、9、8、7、6、5、4、3、2、1,

发生了什么?是什么造成了这种差异?

【问题讨论】:

  • 第一个 sn-p 打印 n 两次...
  • cout &lt;&lt; n &lt;&lt; ", " &lt;&lt; --n; 这会显示 3 个内容,n", "--n。在第二个循环中,cout &lt;&lt; n &lt;&lt; ", "; --n; 这显示了两个东西,n", "。然后,它递减 n --n
  • 在您的第一个示例中,将cout &lt;&lt; n &lt;&lt; ", " &lt;&lt; --n; 更改为cout &lt;&lt; n &lt;&lt; ", " &lt;&lt; --n &lt;&lt; "\n";,您应该会看得更清楚。
  • pre-C++17,你甚至可能有未确定的评估顺序的奇怪结果。
  • @PaulSanders 谢谢!是的,它让一切都清楚,伙计! ;-)

标签: c++ loops while-loop


【解决方案1】:

值没有区别,只是出现的次数不同,因为打印的次数不同。

第一个输出,为清楚起见添加了“()”:

(10, 9)(9, 8)(8, 7)(7, 6)(6, 5)(5, 4)(4, 3)(3, 2)(2, 1)(1, 0)

请注意,由输出的开头和结尾创建的数字对之间没有“,”。

第二个输出:

(10, )(9, )(8, )(7, )(6, )(5, )(4, )(3, )(2, )(1,)

请注意,我不会在这个问题中讨论由于在一个值上使用++ 并在同一语句中输出它而导致的不可靠评估顺序的主题。这只是关于您在环境中观察到的行为差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2016-04-16
    相关资源
    最近更新 更多