C++ if statement with ||
C++ if statement with ||
如果输入的性别不是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";
}
相关文章:
- Problems with std::cin.fail()
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- OpenCV RTP-Stream with FFMPEG
- ANTLR GOTO statement
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- std::bind c++ in if statement
- DLL Made with CMake 使程序崩溃
- QtCreator with C 库中的链接器问题
- C++ if statement with ||
- QSqlQuery INSERT statement with sqlite3
- CPPCHECK 查找宏的查找"redundant code: found a statement that begins with numeric constant"
- CPPCHECK 报告"Redundant code: Found a statement that begins with numeric constant" 'using'声明