c++ - 我正在尝试创建一个布尔函数来评估一个 char 并返回 true 如果 char 是 '(' ')' '*' '-' '+'
问题描述
我收到一个警告代码 C682,而且我对编程比较陌生,所以我不确定到底出了什么问题。
bool isOperator(char ch)
{
if (ch == '(' or ')' or '*' or '-' or '+')
{
return true;
}
else
return false;
}
如果char是其中之一,我希望它返回true,如果它是其他东西,我希望它返回false。
解决方案
or
是 C++ 中的逻辑运算符,因此您需要放置条件运算符:
return ch == '(' or ch == ')' or ch == '*' or ch == '-' or ch == '+');
否则,您将'c'
and others 作为一个表达式,它总是true
.
有些人可能会认为这更具可读性(重复性较低):
bool isOperator(char ch)
{
switch( ch ) {
case '(' :
case ')' :
case '*' :
case '-' :
case '+' :
return true;
}
return false;
}
或更多 C++ 方式(虽然它更贵,但在你的情况下,5 个变体不太重要):
bool isOperator(char ch)
{
const std::string_view ops( "()*-+" );
return ops.find( ch ) != std::string_view::npos;
}
推荐阅读
- python - OpenCV:合并/合并重叠的边界框,用周围的边界框替换
- html - 使用 d3.js 添加不带值的属性
- c# - 打开pdf文件的未知加密类型
- javascript - 3 秒后移除 div 覆盖
- list - Prolog 得到 NxN 矩阵的平方
- angular - 我怎样才能让这个角度动画重复?
- php - 如何仅在美元符号 1 ($1) 中替换正则表达式 preg 中的字符?
- python - 如何使用用户的输入在 Flask - Python 中运行另一个函数?
- javascript - JavaScript 中的密码字符检查器
- java - 使用 Facebook Graph Api 获取 FB ID