如何将负数从中缀转换为后缀?
假设我有一个表达式
a = - b - (-c-d)
在某些地方,我读到你可以像
这样的负面数字a =( - b) - (-c-d)
但是如果我这样做,我会在后缀表达式的开头加上“ab-”这样的术语,这意味着a-b并且不正确。
如何转换此内容?
答案 0 :(得分:5)
在中缀表示法中,您必须区分二元减法运算符 sub 和一元否定运算符 neg 。两者都用减号表示,但上下文告诉你哪个是。
你有一个否定,当表达式开头的减号,或者一个左括号或二元运算符之后:
- ( x + y )→ x y 添加 负强>
4× - x →4 x neg mult
2×( - x + y)→2 x neg y 添加 < strong> mult
当减号位于右括号之后或符号之后,即在变量或数字之后,你有一个减法:
1 - x →1 x sub
(4 * x ) - 1 →4 x mult 1 sub
注意一元运算符 neg 只从堆栈中取出一个参数。如果你想坚持使用二元运算符,你可以在第二个操作数之前推零,并使用二进制 sub :
- ( x + y )→0 x y 添加 <强>子强>
4 x neg mult →4 0 x sub mult
2 x neg y 添加 mult →2 0 x sub y 添加 mult
最后,您可以将一个类似的逻辑应用于一元加号,您可以忽略它:
+ x → x
+( x + y )→ x y 添加