虽然循环不会以多个异常结束

时间:2014-11-19 21:48:07

标签: c++

我可能遗漏了一些非常基本的东西,但我已经搜索过,并且找不到类似的东西。程序应该在变量num1变为10时结束,但是等待num2也变为10。我非常确定我正确使用或运营商。

#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);

    }

4 个答案:

答案 0 :(得分:4)

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

所以在你的情况下,当num1大于10时,第一次比较是假的,第二次比较使得整个表达式为真

答案 1 :(得分:4)

你的while语句说,“只要num1或num2小于或等于10,就继续”。该语句是一个布尔表达式“在这是真的时继续前进”。如果你替换|| (或)与&amp;&amp; (并且)当两个变量都小于或等于10时,你会说要继续。

答案 2 :(得分:3)

使用&amp;&amp;运算符代替||操作

&安培;&安培;是布尔“和”运算符,它将提供您想要的功能。

答案 3 :(得分:2)

不难;人类的大脑并没有很好地处理它。

你想在

时停止循环
num1 > 10 || num2 > 10

然而,在while循环中你必须说循环何时应该继续 - 这不是(循环应该停止)。

现在!(a || b)==!a&amp;&amp; !湾(这是法律 - 摩根法律。)

所以你想要

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

哪个是

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

哪个是

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