“或”操作数“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,它仍然将其视为无效响应。我做错了什么?
答案 0 :(得分:3)
实际上你的情况有误。
布尔值||以错误的方式使用。如果您想检查a
'是否等于1
或2
,您应该像这样检查
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”