C++ C++;在if语句中使用char

C++ C++;在if语句中使用char,c++,if-statement,char,C++,If Statement,Char,我正在构建一个标准的四功能计算器,但遇到了一个令人困惑的错误 char Engine::AskUser(){ char type; std::cout << "'a'dd, 'm'ulitply, 's'ubract, or 'd'ivide ?\n"; std::cin >> type; CheckUser(type); return type; } void Engine::CheckUser(char uType){

我正在构建一个标准的四功能计算器,但遇到了一个令人困惑的错误

char Engine::AskUser(){
    char type;
    std::cout << "'a'dd, 'm'ulitply, 's'ubract, or 'd'ivide ?\n";
    std::cin >> type;
    CheckUser(type);
    return type;
}

void Engine::CheckUser(char uType){
    if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd'){
        std::cout << "Type 'a', 'm', 's', or 'd'\n";
        AskUser();
    }
    else
        return;
}
char引擎::AskUser(){
煤焦类型;
std::cout>类型;
检查用户(类型);
返回类型;
}
void引擎::CheckUser(char-uType){
如果(uType!=“a”| uType!=“s”| uType!=“m”| uType!=“d”){
标准::cout
字符
要么不等于
'A'
,要么等于
'A'
,在这种情况下,它不等于
's'
,因此此条件始终为真

它应该是合乎逻辑的,并且:

if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')
字符
要么不等于
'A'
,要么等于
'A'
,在这种情况下,它不等于
's'
,因此此条件始终为真

它应该是合乎逻辑的,并且:

if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')

您的if条件正在执行以下检查:

如果值不等于a-- 或 如果值不等于s-- 或 如果值不等于m-- 或 如果值不等于d--

无论char变量uType是什么,它都不会是前面4个变量中的至少3个,因此if条件将始终导致一个真值

编辑:我相信你想做的是:

if ( (uType == 'a') || (uType == 's') || ......)
{
    return;
}
else
{
   ...//The code you previously had if it were true
}

在本例中,只要uType是4个值中的1个,您就会返回,否则您将实现代码。

您的if条件正在执行以下检查:

如果值不等于a-- 或 如果值不等于s-- 或 如果值不等于m-- 或 如果值不等于d--

无论char变量uType是什么,它都不会是前面4个变量中的至少3个,因此if条件将始终导致一个真值

编辑:我相信你想做的是:

if ( (uType == 'a') || (uType == 's') || ......)
{
    return;
}
else
{
   ...//The code you previously had if it were true
}
在本例中,只要uType是4个值中的1个,您就会返回,否则您将实现代码。

更改此行-

if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')
为此—

if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')
它肯定会起作用。

更改此行-

if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')
为此—

if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')
这肯定会奏效