我开始用C ++编写代码(VS 2015)。
写了一个使用while语句的小程序。
#include <iostream>
using namespace std;
int main() {
int x = 1;
int y = 2;
int z = 0;
while (x != y || z != y) {
cout << "x: " << x << "\n" << "z: " << z << "\n";
x++;
z++;
}
cin.get();
}
如果我正确地得到它应该以这种方式工作(但是因为它进入无限循环,我猜我的逻辑不像我想的那样正确。)
所以在我看来,while语句应该以这种方式工作。
X不等于y OR z不等于y。
为X添加+1,为Z添加+1。
这样做直到声明成立(或至少表达的左侧)。
答案 0 :(得分:0)
没有迭代,你的两个条件在某一点被评估为false
,因此循环不会停止。
您可以使用调试器逐步调试代码,轻松调查该行为,并观察变量值的变化情况。
答案 1 :(得分:0)
循环迭代
x=1
,y=2
,z=0
,条件:true
x=2
,y=2
,z=1
,条件:true
x=3
,y=2
,z=2
,条件:true
。 。 。等等
条件永远不会评估为false
,并导致无限循环。考虑更改为和运算符以使循环有限,或者可能更改某些值。
while (x != y && z != y) {
输出
x: 1
z: 0
答案 2 :(得分:0)
while条件的第一个表达式在第一次迭代后变为false。 经过几次迭代后,第二个表达式变为false,但在第一次执行后,第一个表达式再次变为true,并且程序将永远运行,因为无限循环。
答案 3 :(得分:0)
循环将保持迭代,因为每当x和y值增加时,它将永远不会变为0,这等于分配给y的值。 (简单的逻辑)
更改此声明 - &gt;而(x!= y || z!= y)进入 - > while(x!= y&amp;&amp; z!= y) 你应该得到输出: X:1 Z:0