在 if 语句中评估单个字符:C++
Posted
技术标签:
【中文标题】在 if 语句中评估单个字符:C++【英文标题】:Evaluating a single char in an if statement: C++ 【发布时间】:2011-12-22 12:31:40 【问题描述】:我的 if 循环遇到了一些问题。
首先,我分配了 char 符号。
void evaluate_ps(istream& input)
char sign;
input >> sign;
cout << sign << endl;
check(sign);
打印 / 所以我的符号有值 '/'
然后我去我的 void check(char operation) 函数
void check(char operation)
if(operation != '-' || operation != '+' ||
operation != '*' || operation != '/')
return false;
else return true;
它返回错误...为什么!!!!我似乎无法弄清楚这一点。
谢谢大家。
【问题讨论】:
小风格问题(与问题无关):if
子句中表达式的结果是一个布尔值。你可以return (operation != '-' && operation != ...)
。看起来像 if(x) return true; else return false;
的代码应该引发危险。
没有“if 循环”这样的东西。循环是重复执行的语句:for
、while
、do-while
。 if 语句只是一个 if 语句。
要完成 Keith Thompson,您的意思是说您的 if block。
【参考方案1】:
这是因为您使用了||
(OR) 运算符。当operation
是/
时,检查operation != '-'
返回真。由于||
被短路,整个表达式返回true。
将其更改为 && (AND):
if (operation != '-' && operation != '+' &&
operation != '*' && operation != '/')
另一种写法是:
if (!(operation == '-' || operation == '+' ||
operation == '*' || operation == '/'))
【讨论】:
【参考方案2】:你可能是说你所有的||
都是&&
:
if(operation != '-' && operation != '+' &&
operation != '*' && operation != '/')
否则,它将始终进入 if 语句,因为字符始终不等于 4 种不同事物之一。
【讨论】:
【参考方案3】:if 语句响应 / 不等于其他值之一
在一般意义上考虑“或”
如果蓝色不是绿色、不是红色或不是蓝色,就说不
您需要执行以下操作:
if (operation != '+' && operation != '-' && operation != '/' && operation != '*')
return false;
return true;
这样就好了
如果蓝色不是绿色,也不是红色,也不是蓝色,就说不
【讨论】:
以上是关于在 if 语句中评估单个字符:C++的主要内容,如果未能解决你的问题,请参考以下文章