while 循环不会以多个异常结束

While loop wont end with more than one exception

本文关键字:异常 结束 循环 while      更新时间:2023-10-16

我可能缺少一些非常基本的东西,但我已经搜索过,没有找到类似的东西。当变量 num1 达到 10 时,程序应该结束,但它也等待 num2 达到 10。我很确定我正确使用了 or 运算符。

#include <iostream>
    using namespace std;
    int main(){
        int num1 = 5;
        int num2 = 0;
        int counter = 0;
        do{
            counter++;
            num1++;
            num2++;
            cout << counter << "  " << num1 << "   " << num2 << endl;
        } while (num1 <= 10 || num2 <= 10);
    }

你的 while 语句说,"只要 num1 或 num2 小于或等于 10,就继续"。 该语句是一个布尔表达式"继续前进,而这是真的"。 如果替换 ||(或)与&&(和)一起,然后你会说在两个变量都小于或等于十时继续。

F or F = F            F or T = T        T or F = T    T or T = T

因此,在您的情况下,当 num1 大于 10 时,即使第一次比较也是假的,第二次比较使整个表达式为真

使用 &

& 运算符代替 || 运算符。

&

&是布尔"and"运算符,它将提供您想要的功能。

不难;人类的大脑不能很好地处理它。

您希望在以下情况下停止循环

num1 > 10 || num2 > 10

但是,在一段时间循环中,您必须说循环何时应该继续 - 这不是(循环应该停止)。

现在!(a || b) == !a && !b. (这是定律 - 德摩根定律。

所以你想要

while (!(num1 > 10 || num2 > 10))

这是

while (!(num1 > 10) && !(num2 > 10))

这是

while (num1 <= 10 && num2 <= 10)