评估if语句中的单个char:C ++

时间:2011-11-05 04:23:31

标签: c++ if-statement char

我的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;
 }

并且它返回了假...为什么!!!!我似乎无法解决这个问题。

谢谢大家。

3 个答案:

答案 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;

这样就像这样

如果蓝色不是绿色且不是红色而不是蓝色说不,