中缀为负数的后缀

时间:2017-10-21 07:56:15

标签: infix-notation postfix infix-operator

如何将负数从中缀转换为后缀?

假设我有一个表达式

a = - b - (-c-d)

在某些地方,我读到你可以像

这样的负面数字

a =( - b) - (-c-d)

但是如果我这样做,我会在后缀表达式的开头加上“ab-”这样的术语,这意味着a-b并且不正确。

如何转换此内容?

1 个答案:

答案 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 添加