我的if语句无论输入什么都会被击中。 我无法理解为什么。以下是代码。
void Novice::selection()
{
char selection, shift;
cout << "Please select a section to run: A - Home Row, B - Bottom Row, C - Top Row, D - Pointer Fingers, E - Right Pinky;" << endl;
cin >> selection;
selection = toupper(selection);
if (selection != 'A' || 'B' || 'C' || 'D' || 'E') {
cout << "Invalid Input. Please select again" << endl;
cin >> selection;
}
if (selection == 'A' || 'B' || 'C') {
cout << "you're here" << endl;
}
如果输入是 "A",第一条if语句就会被触发 如果我再输入A,第二条if语句也会被触发 希望得到帮助。
这不是c++中逻辑运算符的工作方式。要对多个值进行比较,你需要这样做。
if (selection == 'A' || selection == 'B' || selection == 'C') {
// ...
}
注意,你的第一个 if
是不正确的,即使你使用上面的修复方法。如果你检查一个值是否不等于其他几个值,这将永远是真的。这个条件可能需要像这样。
if (selection != 'A' && selection != 'B' &&
selection != 'C' && selection != 'D' && selection != 'E') {
// ...
}
或者,对于第一个 if
条件下,你可以使用 switch
声明,像这样。
switch ( selection )
{
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
break;
default:
cout << "Invalid Input. Please select again" << endl;
cin >> selection;
}