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')
这肯定会奏效