如何为运算符设置优先级值,例如'*','/','+'和' - 。

时间:2014-04-24 22:51:42

标签: c++

我要么将它们设置为bool值,要么只是整数值,这样我就可以告诉我的函数在将它们加到/减去另一个操作数之前将这两个整数相乘/除。

这是我的代码:

while (!S.empty() && **PRECEDENCE**next <= **PRECEDENCE**S.top())
{
    temp = S.top();
    S.pop();
    postfix.append(temp);
}

其中S用于堆栈。因此,我们要说next*令牌而S.top()是&{39; +&#39;,所以*优先于+ *,因此我需要为+*分配一个值,以便在将它们相互比较时,比较它们的值。因此,1的值为+,而0的值为{{1}}。

1 个答案:

答案 0 :(得分:1)

OMG,有很多方法可以做到这一点。

查找表
您可以创建记录表并在表中搜索运算符,然后检索优先级值。

使用开关声明
我不建议,但它与映射的类似功能优先于运营商。

使用std::map
与其他两个概念相同,除了使用std::map<char, int>作为运算符字符和优先级。

硬编码优先级
您首先比较的运算符将具有最高优先级。检查的下一个运算符的优先级较低。

搜索网络和StackOverflow
提示:其他人已完成此任务。搜索StackOverflow或网页:

"c++ postfix operator precedence"
"c++ calculator operator precedence"
"c++ calculator operator evaluation"
"c++ postfix operator evaluation"

或使用我未列出的其他同义词。

发布前的研究
通过研究和了解其他人所做的事情,做聪明人并作弊。在此之前发布问题。

使用调试器
使用调试器或打印语句查看问题所在 如果您仍然难倒,请发布问题,您的最小代码和预期行为。