在 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 != '-' &amp;&amp; operation != ...)。看起来像 if(x) return true; else return false; 的代码应该引发危险。 没有“if 循环”这样的东西。循环是重复执行的语句:forwhiledo-while。 if 语句只是一个 if 语句。 要完成 Keith Thompson,您的意思是说您的 if block 【参考方案1】:

这是因为您使用了|| (OR) 运算符。当operation/ 时,检查operation != '-' 返回真。由于||被短路,整个表达式返回true。

将其更改为 && (AND):

if (operation != '-' && operation != '+' &&
   operation != '*' && operation != '/')

另一种写法是:

if (!(operation == '-' || operation == '+' ||
      operation == '*' || operation == '/'))

【讨论】:

【参考方案2】:

你可能是说你所有的|| 都是&amp;&amp;

if(operation != '-' && operation != '+' && 
  operation != '*' && operation != '/')

否则,它将始终进入 if 语句,因为字符始终不等于 4 种不同事物之一。

【讨论】:

【参考方案3】:

if 语句响应 / 不等于其他值之一

在一般意义上考虑“或”

如果蓝色不是绿色、不是红色或不是蓝色,就说不

您需要执行以下操作:

if (operation != '+' && operation != '-' && operation != '/' && operation != '*') 
    return false;

return true;

这样就好了

如果蓝色不是绿色,也不是红色,也不是蓝色,就说不

【讨论】:

以上是关于在 if 语句中评估单个字符:C++的主要内容,如果未能解决你的问题,请参考以下文章

C++ 使用存储在字符串中的函数名称获取函数指针或评估函数

C ++循环不断评估if语句,使其太慢

使用或 || if 语句中的运算符以评估变量(不等于两(2)个字符串)

如何在javascript中评估语句if [重复]

如何在 freemarker 中评估 if 语句?

条件语句