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()类型的值,或类似的东西?
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)