我要么将它们设置为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}}。
答案 0 :(得分:1)
查找表
您可以创建记录表并在表中搜索运算符,然后检索优先级值。
使用开关声明
我不建议,但它与映射的类似功能优先于运营商。
使用std::map
与其他两个概念相同,除了使用std::map<char, int>
作为运算符字符和优先级。
硬编码优先级
您首先比较的运算符将具有最高优先级。检查的下一个运算符的优先级较低。
搜索网络和StackOverflow
提示:其他人已完成此任务。搜索StackOverflow或网页:
"c++ postfix operator precedence"
"c++ calculator operator precedence"
"c++ calculator operator evaluation"
"c++ postfix operator evaluation"
或使用我未列出的其他同义词。
发布前的研究
通过研究和了解其他人所做的事情,做聪明人并作弊。在此之前发布问题。
使用调试器
使用调试器或打印语句查看问题所在
如果您仍然难倒,请发布问题,您的最小代码和预期行为。