C ++ while语句不等于检查

时间:2017-02-04 09:43:34

标签: c++ while-loop

我开始用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。

这样做直到声明成立(或至少表达的左侧)。

4 个答案:

答案 0 :(得分:0)

没有迭代,你的两个条件在某一点被评估为false,因此循环不会停止。

您可以使用调试器逐步调试代码,轻松调查该行为,并观察变量值的变化情况。

答案 1 :(得分:0)

循环迭代

  1. x=1y=2z=0,条件:true
  2. x=2y=2z=1,条件:true
  3. x=3y=2z=2,条件:true
  4. 。 。 。等等

    条件永远不会评估为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