You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于中缀转后缀中非交换运算符-、/的技术疑问

关于后缀表达式中非交换运算符(-、/)的困惑解答

嘿,我完全get到你困惑的点了!咱们把这个问题拆解开,一步步理清楚就明白啦~

首先得牢牢记住后缀表达式(逆波兰表达式)的核心运算规则:

当遇到二元运算符时,我们会从栈中依次弹出两个操作数:先弹出的是右操作数,后弹出的是左操作数,然后用「左操作数 运算符 右操作数」的顺序计算,再把结果压回栈中。

交换运算符(+、*)因为左右操作数互换不影响结果,所以哪怕偶尔搞混顺序也不会出错,但非交换的-和/就必须严格遵守这个规则,不然结果肯定不对。

咱们用你提到的例子验证:

  • 后缀表达式 4 5 –:
    1. 先把4压入栈,再把5压入栈
    2. 遇到-,弹出栈顶的5(右操作数),再弹出4(左操作数)
    3. 计算 4 - 5,结果是-1
      对应的中缀表达式就是 4 - 5,两者计算结果完全一致,并没有矛盾哦~

你觉得“结果不一致”,大概率是不小心搞反了操作数的对应关系——比如误以为后缀4 5 –对应的中缀是5 - 4,那自然结果就对不上了。

再拿/举个例子加深理解:

  • 后缀表达式 8 2 /:按照规则计算是8 / 2 = 4,对应中缀8 / 2
  • 如果是后缀2 8 /:计算就是2 / 8 = 0.25,对应中缀2 / 8

总结一下:后缀表达式里的「操作数A 操作数B 运算符」,永远对应中缀的「操作数A 运算符 操作数B」,非交换运算符必须严格遵守这个顺序,才能保证结果一致。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:34:18