C while 语句不等于检查

新手上路,请多包涵

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

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

原文由 Richie G. Edward 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 430
2 个回答

循环迭代

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

…等等

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

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

输出

x: 1
z: 0

原文由 Shreevardhan 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

原文由 πάντα ῥεῖ 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题