C++ if statement with ||

C++ if statement with ||

本文关键字:with statement if C++      更新时间:2023-10-16

如果输入的性别不是m/m/f/f/f/x/x,我必须打印错误,但是我的if语句始终返回true

cout << "Please enter the candidate's information "
        "(enter 'X' to exit).";
cout << endl << "gender: ";
cin.get(gender);
cin.ignore(1000,'n');
if (gender != 'M' || gender != 'm' || gender != 'F' ||
    gender != 'f' || gender != 'X' || gender != 'x')
    {
        cout << "error";
    }

您正在使用错误的布尔运算符。

gender不能同时全部。因此,条件始终将评估为true。您需要使用&&而不是||

if (gender != 'M' && gender != 'm' && gender != 'F' ||
    gender != 'f' && gender != 'X' && gender != 'x')
{
   cout << "error";
}

它发现使用更可读性:

// Define a function that encapsulates the logic 
bool isValidGender(char gender)
{
   return (gender == 'M' || gender == 'm' || gender == 'F' ||
           gender == 'f' || gender == 'X' || gender == 'x');
}

使用该功能。

if (!isValidGender(gender))
{
   cout << "error";
}

您也可以使用switch语句实现isValidGender

bool isValidGender(char gender)
{
   switch (gender)
   {
      case 'M':
      case 'm':
      case 'F':
      case 'f':
      case 'X':
      case 'x':
         true;
   }
   return false;
}

您可以首先将gender转换为小写字母,以简化switch语句。

   switch (std::tolower(gender))
   {
      case 'm':
      case 'f':
      case 'x':
         true;
   }

您需要使用&&而不是||,因为当gender不等于时,要触发错误。

if (gender != 'M' && gender != 'm' && gender != 'F' &&
    gender != 'f' && gender != 'X' && gender != 'x')
{
   cout << "error";
}

另外,您可以将!||逻辑与==一起使用而不是!=

即。当gender 不等于 触发这样的错误:

if (!(gender == 'M' || gender == 'm' || gender == 'F' ||
    gender == 'f' || gender == 'X' || gender == 'x'))
{
   cout << "error";
}

仅更改 || to &amp;&amp;&amp; 喜欢

if (gender != 'M' && gender != 'm' && gender != 'F' &&
gender != 'f' && gender != 'X' && gender != 'x')
{
    cout << "error";
}