我可以在while循环中包含“或”操作数吗?

时间:2015-12-12 21:49:13

标签: c++

“或”操作数“do while”循环

我尝试在我的do while循环中包含一个“或”操作数

if(input2 == "1"){
    string input3;
    do {
        cout << "Which would you like to check?" << endl;
        cout << "1. Checking." << endl;
        cout << "2. Savings." << endl;
        cout << "3. Credit Card." << endl;
        cin >> input3;
            if(input3 != "1"||"2"||"3"){
            cout << "That is an invalid response. Please enter again." 
            <<endl;
            }
    } while(input3 != "1"||"2"||"3");
}

但它似乎没有用。即使我放了1,2或3,它仍然将其视为无效响应。我做错了什么?

2 个答案:

答案 0 :(得分:3)

实际上你的情况有误。

布尔值||以错误的方式使用。如果您想检查a'是否等于12,您应该像这样检查

a == 1 || a == 2

当您说input3 != "1"||"2"||"3"时,它会首先评估input3 != "1" || "2" || "3"。这将始终评估为TRUE,因为任何非零并且可以转换为布尔值的内容不是false中的C++

修改代码以使用正确的比较..

if(input2 == "1"){
    string input3;
    do {
        cout << "Which would you like to check?" << endl;
        cout << "1. Checking." << endl;
        cout << "2. Savings." << endl;
        cout << "3. Credit Card." << endl;
        cin >> input3;
            if(input3 != "1" && input3 != "2" && input3 != "3"){
            cout << "That is an invalid response. Please enter again." 
            <<endl;
            }
    } while(input3 != "1" && input3 != "2" && input3 != "3");
}

答案 1 :(得分:1)

此代码:

input3 != "1"||"2"||"3"

表示(input3不是“1”)或(“2”)或(“3”)

当在像这样的布尔表达式中使用时,C ++中的字符串文字(如“2”)将计算为布尔值true,因此您的表达式将始终被计算为true。

我认为你想要的是:

input3 == "1" || input3 == "2" || input3 == "3"

表示input3为“1”,“2”或“3”

input3 != "1" && input3 != "2" && input3 != "3"

表示input3既不是“1”,“2”或“3”