c - RPN中运算符的优先级

标签 c algorithm data-structures

在 C 中计算 postfix 表达式时,如果我们的标记是一个运算符,我们必须将它放置在堆栈中,使其具有最高优先级。

我的问题是操作符*/%中优先级最高的。

我们还需要考虑关联性吗?由于所有这些运算符都具有从左到右的关联性/ 是否会比 * 获得更高的优先级?

最佳答案

优先级 通常只适用于中缀表示法。后缀(和前缀)符号通常被认为是明确指定哪些操作数与哪个运算符相关联。只有在解析中存在歧义时,优先级才会发挥作用,而后缀表示法则不是这种情况。

出现在中缀表达式中的优先问题

4 * 5 + 3 / 12

转换为RPN形式后根本不存在

4 5 * 3 + 12 /

或前缀形式

(/ (+ (* 4 5) 3) 12)

.

考虑像 Shunting-Yard Algorithm 这样的东西时,可能会产生混淆。可用于从中缀表达式生成 RPN 表示或直接求值。它通过将运算符延迟到辅助堆栈来处理运算符优先级,直到较低优先级的运算符强制它被弹出和计算(或输出)。

关于c - RPN中运算符的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18348975/

相关文章:

c - 分割失败

algorithm - Lamport 的 Paxos 中的矛盾使简单的论文

javascript - 协助伪编码

algorithm - Dijkstra:在有向图中找到最短路径

java - 如何为有向网络图中的节点分配权重并计算有效节点权重

java - 从未排序的单链表中删除重复项,在尝试跳过重复元素时导致逻辑错误

c++ - 如何使用 VS2017 将 float 据从 .txt 文件写入二维数组?

自动计算批处理价格

c++ - 如何在 C++ 中避免 GOTO

algorithm - 按用户评论标准订购对象