我正在构建一个标准的四功能计算器,但遇到了一个令人困惑的错误。
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;
}
发生的情况是,即使我输入 a、s、m 或 d,if
语句仍会重复执行,就好像这些条件为真,但显然不是这样。我不明白。 uType 是否没有从 AskUser() 或类似的东西中携带类型的值?
最佳答案
if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')
A char
要么不等于 'a'
,要么等于 'a'
,在这种情况下它不等于到的
,所以这个条件总是为真。
应该是逻辑与:
if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')
关于C++ 在 if 语句中使用 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438273/