为什么我的or运算符不能正常工作?(C++)

问题描述 投票:0回答:1

我的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++ operators
1个回答
2
投票

这不是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;
}
© www.soinside.com 2019 - 2024. All rights reserved.