在 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/