Инфикс против постфикса - PullRequest
3 голосов
/ 14 августа 2010

Имел этот вопрос вчера в интервью.Какой лучше использовать?Инфикс (с круглыми скобками) или Постфикс?Состояние с указанием причины.

Я мог бы только сказать им, что:

  1. компиляторам легче обрабатывать постфиксное выражение для арифметических вычислений и приоритета операторов.
  2. Больше памяти используется для хранения и обработки скобок.

Пожалуйста, расскажите, правильно ли я на этом?

Ответы [ 3 ]

6 голосов
/ 14 августа 2010

Postfix не требует какого-либо операторского порядка операций; это всегда явно. Поэтому для стекового компилятора его очень легко реализовать, а для людей - легко понять порядок операций.

С другой стороны, infix не требует от вас читать все глаголы в конце :-P. Люди работают над инфиксом или даже префиксом; «добавить A к B» имеет больше смысла, чем «A и B: добавить их».

Но этот вопрос принципиально субъективен. Postfix всегда будет лучше для компьютерной системы, но у infix есть свои достоинства.

1 голос
/ 14 августа 2010

Память здесь обычно не проблема.Компиляторы тратят кучу памяти на другие вещи.Postfix обычно влечет за собой стек операндов, который включает определенный объем памяти (все еще небольшой) во время выполнения.

Postfix полезен для низкоуровневого интерпретируемого кода, такого как Java, Forth, Postscript.Все они имеют аппаратные или сверхлегкие программные реализации.

Infix лучше для удобочитаемости.

Конечно, нет способа узнать, как проблема влияет на вашу область, не зная, какую работу она выполняет.есть.

0 голосов
/ 09 сентября 2010

Сходство между Infix, Postfix и Prefix:

  • Порядок операндов одинаков в трех нотациях (но порядок операторов меняется, поэтому имена также)

Различия между Infix, Postfix и Prefix:

  • Infix более удобочитаем.Вот почему он очень часто используется в книгах по математике.
  • Infix должен добавить больше информации, чтобы устранить двусмысленность.Так, например, мы используем скобки, чтобы отдать предпочтение оператору с более низким приоритетом, но в постфиксе у нас есть порядок операторов.(как упомянуто @EJP здесь
  • Postfix и Prefix более машиночитаемы. Так, например, в postfix каждый раз, когда вы встречаете число, помещайте его в стек, каждый развы сталкиваетесь с оператором, извлекаете последние два элемента из стека, применяете операцию и возвращаете результат обратно.

Спасибо

...