C++ 在 if 语句中使用 char
Posted
技术标签:
【中文标题】C++ 在 if 语句中使用 char【英文标题】:C++ using char in an if statement 【发布时间】:2014-10-15 19:00:00 【问题描述】:我正在构建一个标准的四功能计算器,但遇到了一个令人困惑的错误。
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() 或类似的类型的值?
【问题讨论】:
【参考方案1】:if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')
char
要么不等于'a'
,要么等于'a'
,在这种情况下它不等于's'
,所以这个条件总是成立的。
应该是逻辑与:
if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')
【讨论】:
【参考方案2】:您的 if 条件正在执行以下检查:
如果值不等于-- 要么 如果值不等于 s -- 要么 如果值不等于 m -- 要么 如果值不等于 d --
无论 char 变量 uType 是什么,它始终不会是前 4 个变量中的至少 3 个,因此 if 条件将始终导致 TRUE 值。
已编辑:我相信您想要做的是以下内容:
if ( (uType == 'a') || (uType == 's') || ......)
return;
else
...//The code you previously had if it were true
在这种情况下,只要 uType 是 4 个值中的 1 个,您就会返回,否则您将实现您的代码。
【讨论】:
【参考方案3】:改变这一行 -
if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')
到这里——
if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')
一定会成功的。
【讨论】:
以上是关于C++ 在 if 语句中使用 char的主要内容,如果未能解决你的问题,请参考以下文章