好的,初学者,放轻松。感谢。
#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 ...请解释。
答案 0 :(得分:5)
操作顺序为:
while1
为假),则停止循环while1
设为false(如果当x为9时,我们按如下方式进行:
while1
为真)while1
设为true while1
为真)while1
设置为false 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)
你在做的是:
...
你的程序从while1 = true开始另一个循环
最好的办法就是
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循环...
除非你打算在那个循环中做更多的事情,否则应该是安全的......