gpt4 book ai didi

c++ - 为什么循环在 C++ 中执行此操作

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:22 25 4
gpt4 key购买 nike

好的,初学者,放轻松。谢谢。

#include <iostream>
#include <windows.h>

using namespace std;
int main()
{

int x = 0;
bool while1 = true;
while (while1)
{
cout << x << "\n";
sleep(200);
if (x < 10)
{
while1 = true;
}
else if (x >= 10)
{
while1 = false;
}
x = x+1;
}
cin.get();
}

好吧,所以我不明白为什么如果我在将 1 添加到 x 之前让 if 语句检查 x < 10,程序甚至将 x 变为 10...请解释。

最佳答案

操作顺序是:

  • 1) 如果 3) 发现 x >= 10(如果 while1 为假)则停止循环
  • 2) 打印出x
  • 3) 检查此处是否 x >= 10 并设置 while1 为 false 如果是
  • 4) 增量 x

当 x 为 9 时,我们进行如下操作:

  • 不要停止循环(while1 为真)
  • 打印出 9
  • x 还不是 >= 10,设置 while1 为 true
  • x 增加到 10
  • 不要停止循环(while1 为真)
  • 打印出 10
  • x 现在 >= 10,将 while1 设置为 false
  • x 增加到 11
  • 我们停止循环,因为 while1 被设置为 false

因此,当 x 为 10 时,x 会被打印出来。问题是,您检查并根据检查采取行动的方式,在停止之前循环了太多次。

解决这个问题的一种方法是

while (x < 10)
{
cout << x << "\n";
Sleep(200);
x = x+1;
}

现在循环不会在 x 为 10 的同一次传递上执行,而不是紧接着的传递。

更好的是:

for (int x = 0; x < 10; ++x)
{
cout << x << "\n";
Sleep(200);
}

关于循环递增的 x 值的意图更清楚。

关于c++ - 为什么循环在 C++ 中执行此操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com