这是一个非常简单的问题,我找不到答案。
我正在尝试编写一个函数,当传递两个左边优先级更高的字符时返回一个 bool 值。
我可以通过以下方式实现所需的功能:
bool Precedence(char lhs, char rhs) {
if ((lhs == '*' || lhs == '/') && (rhs == '+' || rhs == '-'))
return true;
return false;
}
这很好,但为什么下面的不完全一样:
bool Precedence(char lhs, char rhs) {
if ((lhs == ('*' || '/')) && (rhs == ('+' || '-')))
return true;
return false;
}
我知道这是错误的,但为什么呢?对我来说,他们都读得一样。抱歉,我知道这很愚蠢,但这让我发疯。
最佳答案
C++ 没有定义这样的逻辑运算符。
lhs == ('*' || '/')
并不意味着 lhs 等于 * 或/
,它返回 true
如果lhs
为 1
。
('*' || '/')
子表达式无条件求值为 true
,因为 char
上的 bool 逻辑类似于检查它们是否为 0
。现在您的表达式看起来像 lhs == true
或 lhs == 1
。
关于|| 的 C++ 排序and && 在 if 语句中测试相等性时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31269809/