【问题标题】:What is the difference between these two programs?这两个程序有什么区别?
【发布时间】:2016-04-28 20:21:10
【问题描述】:

这两个程序有什么区别?第一个程序的输出为 9,第二个程序的输出为 10。

#include <iostream>

using namespace std; // So we can see cout and endl

int main()
{
    int x = 0; // Don't forget to declare variables

    while ( x < 10 ) { // While x is less than 10
        cout << x << endl;
        x++; // Update x so the condition can be met eventually
    }
    cin.get();
}
#include <iostream>

using namespace std; // So we can see cout and endl

int main()
{
    int x = 0; // Don't forget to declare variables

    while ( x < 10 ) { // While x is less than 10
        x++; // Update x so the condition can be met eventually
        cout << x << endl;
    }
    cin.get();
}

【问题讨论】:

  • 第 10 行和第 11 行互换。
  • @Fozi 哈哈哈,可爱的回答
  • 同样,001110101jkfbvafdsfcodeS,但 int main(void) {}code
  • 使用调试器单步执行并观察 x 的值
  • @SuperKhew:我没有看到 Fozi 评论中的幽默。这就是答案。

标签: c++


【解决方案1】:

在第一个代码块中,您输出 x 然后添加到它,因此它将输出 0-9。在第二个代码块中,您在输出之前将 1 添加到 x,因此它会给您输出 1-10。它基于您将x++ 与输出语句相关的位置

【讨论】:

  • 你的意思是这个值打印出来后只会和条件一起检查?
  • @SuperKhew while 循环在每次循环迭代开始前评估条件一次。它不会在循环体内部执行语句时连续评估条件,因此它不会在循环体中间中断。所以是的,该值只会在它被打印后检查(在循环体的迭代完成后,它会检查它是否应该再次循环)。
【解决方案2】:

第一个输出是 0 1 2 3 4 5 6 7 8 9。第二个输出是 1 2 3 4 5 6 7 8 9 10。

【讨论】:

  • 该死的。你打破了我的讽刺探测器。很好地回答了所问的问题,但不是 OP 真正想要的。
【解决方案3】:

在第一个例子中,你写出数字然后增加变量,而在第二个例子中,你首先增加值。

【讨论】:

    【解决方案4】:

    这是由于订单(显然)。在第一个while循环中,当x为9时,打印,增加,不通过条件,不再进入循环。

    在第二种情况下,当x 为 9 时,将其增加到 10,然后打印,然后离开循环。这只是常识。因此,第二个循环跳过数字 0,并打印到 10。

    第一个循环:0,1,2,3,4,5,6,7,8,9

    第二次循环:1,2,3,4,5,6,7,8,9,10

    【讨论】:

    • 该值仅在打印后检查条件?如果条件为 x
    • 因为 9
    【解决方案5】:

    第一个 sn-p 打印变量的值,然后递增它。这意味着不会打印最后一次递增后的变量值。

    第二个 sn-p 增加变量然后打印它。这意味着它不会打印 0。它被初始化为的值。

    【讨论】:

    • 该值打印出来后才跟条件检查?
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多