C++在if语句中使用char

jbu*_*rn7 1 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){
    if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd'){
        std::cout << "Type 'a', 'm', 's', or 'd'\n";
        AskUser();
    }
    else
        return;
}
Run Code Online (Sandbox Code Playgroud)

发生的事情是,即使我输入a,s,m或d,if语句仍然会迭代,好像这些条件是真的,显然不是这种情况.我不明白.uType是否没有携带AskUser()类型的值,或类似的东西?

Yu *_*Hao 8

if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')
Run Code Online (Sandbox Code Playgroud)

A char要么不等于'a',要么等于'a',在这种情况下它不等于's',所以这个条件总是正确的.

它应该是合乎逻辑的AND:

if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')
Run Code Online (Sandbox Code Playgroud)