我的if循环遇到了一些麻烦。
首先,我已经指定了char标志。
void evaluate_ps(istream& input)
{
char sign;
input >> sign;
cout << sign << endl;
check(sign);
}
打印/我的标志有值&#39; /&#39;
然后我转到我的void check(char操作)函数
void check(char operation)
{
if(operation != '-' || operation != '+' ||
operation != '*' || operation != '/')
{
return false;
}
else return true;
}
并且它返回了假...为什么!!!!我似乎无法解决这个问题。
谢谢大家。
答案 0 :(得分:3)
这是因为您正在使用||
(OR)运算符。当operation
为/
时,支票operation != '-'
将返回true。由于||
被短路,整个表达式返回true。
将其更改为&amp;&amp; (AND):
if (operation != '-' && operation != '+' &&
operation != '*' && operation != '/')
另一种写这个的方法是:
if (!(operation == '-' || operation == '+' ||
operation == '*' || operation == '/'))
答案 1 :(得分:2)
您可能意味着所有||
都是&&
:
if(operation != '-' && operation != '+' &&
operation != '*' && operation != '/')
否则,它将始终输入if语句,因为一个字符总是不等于4个不同的东西之一。
答案 2 :(得分:0)
if语句响应/不等于其他值之一
即使在一般意义上也要考虑“或”
如果蓝色不是绿色或不是红色或不是蓝色说不,
您需要执行以下操作:
if (operation != '+' && operation != '-' && operation != '/' && operation != '*') {
return false;
}
return true;
这样就像这样
如果蓝色不是绿色且不是红色而不是蓝色说不,