Infix vs Postfix

时间:2010-08-14 03:36:08

标签: data-structures programming-languages compiler-construction

昨天在采访中有这个问题。 哪个更好用?中缀(带括号)或后缀?有理由的国家..

我只能告诉他们:

  1. 编译器更容易处理算术评估和运算符优先级的后缀表达式。
  2. 更多内存用于存储和处理括号。
  3. 请注意我是否正确吗?

3 个答案:

答案 0 :(得分:6)

Postfix不需要任何操作员驱动的操作顺序;它总是明确的。因此,对于基于堆栈的编译器,它很容易实现,对于人类来说,很容易理解操作的顺序。

另一方面,中缀不需要你阅读最后的所有动词:-P。人类使用中缀甚至前缀; “添加A到B”比“A和B:添加它们”更有意义。

但是,这个问题基本上是主观的。对于计算机系统,Postfix总是更好,但是infix有其优点。

答案 1 :(得分:1)

记忆通常不是问题。编译器会在其他事情上花费大量内存。 Postfix通常需要一个操作数堆栈,它在运行时需要一定量的内存(仍然很小)。

Postfix对于低级可解释代码很有用,例如Java,Forth,Postscript。这些都具有硬件或超轻量级软件实现。

Infix更易于阅读。

当然,如果不知道这是什么类型的工作,就无法知道问题如何影响你的领域。

答案 2 :(得分:-1)

Infix,Postfix和Prefix之间的相似性:

  • 操作数的顺序在三种表示法中相同(但运算符的顺序发生变化,因此名称也是如此)

Infix,Postfix和Prefix之间的差异:

  • Infix更具人性化。这就是为什么它在数学书籍中非常常用。
  • Infix必须添加更多信息以消除歧义。因此,例如,我们使用括号来优先选择较低优先级的运算符,但在postfix中我们有运算符的顺序。 (如@EJP here
  • 所述
  • Postfix和Prefix更具机器可读性。因此,例如,在postfix中,每次遇到一个数字时,将它放在一个堆栈上,每次遇到一个操作符时,弹出堆栈中的最后两个元素,应用操作并推回结果。

由于