C++ 计算if语句中的单个字符:C++;

C++ 计算if语句中的单个字符:C++;,c++,if-statement,char,C++,If Statement,Char,我的if循环有一些问题 首先,我指定了字符符号 void evaluate_ps(istream& input) { char sign; input >> sign; cout << sign << endl; check(sign); } 它返回的是假的。。。为什么?我似乎无法理解这一点 谢谢大家。你可能是说你所有的|都是&&: if(operation != '-' && operatio

我的if循环有一些问题

首先,我指定了字符符号

 void evaluate_ps(istream& input) 
 {
    char sign;
    input >> sign;
    cout << sign << endl;
    check(sign);
 }
它返回的是假的。。。为什么?我似乎无法理解这一点


谢谢大家。

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

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

否则,它将始终输入if语句,因为一个字符将始终不等于4个不同事物中的一个。

您可能是说所有的
|
都是
&&

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

否则,它将始终输入if语句,因为一个字符将始终不等于4个不同事物中的一个。

发生这种情况是因为您使用的是
|
(OR)运算符。当
操作
/
时,检查
操作!='-'返回true。由于
|
短路,整个表达式返回true

将其更改为&(和):

另一种书写方式是:

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

这是因为您正在使用
|
(或)运算符。当
操作
/
时,检查
操作!='-'返回true。由于
|
短路,整个表达式返回true

将其更改为&(和):

另一种书写方式是:

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

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

甚至从一般意义上考虑“或”

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

您需要执行以下操作:

if (operation != '+' && operation != '-' && operation != '/' && operation != '*') {
    return false;
}
return true;
这边是这样的


如果蓝色不是绿色,也不是红色,也不是蓝色,则表示“否”

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

甚至从一般意义上考虑“或”

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

您需要执行以下操作:

if (operation != '+' && operation != '-' && operation != '/' && operation != '*') {
    return false;
}
return true;
这边是这样的


如果蓝色不是绿色,也不是红色,也不是蓝色,则表示“否”

次要样式问题(与问题无关):
if
子句中表达式的结果是布尔值。您只需
返回(操作!='-'&&operation!=…)
。如果(x)返回true,则看起来像的代码;否则返回false应该发出一个红旗。没有“如果循环”这样的东西。循环是重复执行的语句:
for
while
do while
。if语句仅仅是if语句。要完成Keith Thompson,您的意思是说您的if块。次要样式问题(与问题无关)
if
子句中表达式的结果是布尔值。您只需
返回(操作!='-'&&operation!=…)
。如果(x)返回true,则看起来像的代码;否则返回false应该发出一个红旗。没有“如果循环”这样的东西。循环是重复执行的语句:
for
while
do while
。if语句仅仅是if语句。要完成基思·汤普森,你的意思是说你的if块。