C++ 而语句不等于检查

C++ while statement not equal checks

本文关键字:检查 不等于 语句 C++      更新时间:2023-10-16

我从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

或 z 不等于 y。

将 +1 加到 X 和 +1 到 Z。

这样做,直到语句变为真(或至少是表达式的左侧(。

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

通过使用调试器单步执行代码,可以轻松调查该行为,并观察变量值如何更改。

循环迭代

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

。等等

条件永远不会计算为false,并导致无限循环。考虑更改为 and 运算符以使循环有限,或者更改某些值。

while (x != y && z != y) {

输出

x: 1
z: 0

while 条件的第一个表达式在第一次迭代后变为假。第二个表达式在几次迭代后变为 false,但在第一次执行后,第一个表达式再次变为 true,并且您的程序将永远运行,因为无限循环。

循环将保持迭代,因为每当 x 和 y 值增加时,它永远不会变为 0,这等于分配给 y 的值。 (简单逻辑(

更改此语句-> while(x!=y||z!=y( into this-> while(x!=y && z!=y(你应该得到输出:X:1z:0