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

时间:2013-05-03 05:28:24

标签: c++

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

#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();
}

好吧,所以我不明白为什么程序甚至得到x到10如果我有if语句检查x&lt; 10之前我有1加入x ...请解释。

6 个答案:

答案 0 :(得分:5)

操作顺序为:

  • 1)如果3)发现x>&gt; = 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时打印出来。问题是,你检查和操作支票的方式,在停止之前你做了一个循环太多。

解决此问题的一种方法是

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的值的意图更清楚。

答案 1 :(得分:0)

该计划获得x 10,因为x = x + 1发生在if之外。
因此,在循环的一次执行期间,它将检查,然后如果x小于10,它将使while1为真。否则会导致while1错误。之后无论如何都会增加x。 如果while为真,则重复此过程。

答案 2 :(得分:0)

else if (x >= 10)
{
    while1 = false;
}
x = x+1;

我理解为:为什么x到10?这是正确的吗?

将while1设置为false时,while循环不会立即退出。所以当然在退出循环后x将等于10,因为在检查之后x增加了,所以在这段代码之后x实际上是11。

答案 3 :(得分:0)

如果您不希望在x> = 10之后打印x,请在增加x后进行检查。

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

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

答案 4 :(得分:0)

如果循环中x> = 10,那么当循环在while循环中达到10时,循环将再次迭代

答案 5 :(得分:0)

你在做的是:

  1. 要求程序打印x
  2. 的值
  3. 检查x是否小于10
  4. 如果是,则将while1设置为true。否则将while1设置为false
  5. 将x的值增加1(无论while1是true还是false)
  6. ...

    • 在第10个循环开始时,x = 9。
    • 打印9
    • 由于x仍小于10,而1仍为真
    • 在第10个循环结束时,x = 10且while1 = true

    你的程序从while1 = true开始另一个循环

    • 在第11个循环开始时,x = 10.
    • 打印10
    • 由于x现在等于10,while1设置为false
    • 在第11个循环结束时,x = 11且while1 = false

    最好的办法就是

    int x = 0;
    while(x < 10)
    {
       cout << x << endl;      //this way your program will only print 0 to 9
       sleep(200);
       x++;                    //this is the same as x = x+1
    }
    

    如果你坚持使用自己的代码,我猜你可以用break替换你的while1 = false;

    else if (x >= 10)
    {
        break;
    }
    

    中断;如果x&gt; = 10而不增加x或再次通过循环,将让你摆脱while循环...

    除非你打算在那个循环中做更多的事情,否则应该是安全的......