Какой калькулятор прав?

Очередная картинка из серии "о сколько нам ошибок трудных готовит просвещенья дух".

Calc error

Метки публикаций: 
Русский

Комментарии

Слева — правильный ответ. Деление и умножение имеют одинаковый приоритет, поэтому должны вычисляться слева направо.

Касио почему-то считает операцию умножения без явного знака × более приоритетной, чем деление.

Обратная бесскобочная логика позволяет избежать этой неоднозначности.

Учитывая что обычно используется леворекурсивный парсер, в котором каждый из приоритетов - новая функция, кроме всего прочего увеличивающая требуемый объем стека, эта "особенность" сделана специально, интересно чем это продиктовано.

В каком-то дремучем калькуляторе так сделали — и продолжают с бараньим упорством, для совместимости. Возможно, даже до паржинга. Особый случай, когда клавиша "(" нажималась сразу после цифр.

Например, в Б3-34 Fxy не убирает из стека свой второй аргумент — МК-161 продолжает эту неряшливость. Хотя возможность исправиться появилась, соображения совместимости оказались важней.

Нет, совместимость - это сила! Я как-то в сервисе на современном ноутбуке ассемблерную х86 ОС Колибри запускал - загрузка с медленной старой 128МБ флешки порядка секунды! Единсвенный ноут который с Колибри не работал нормально, был с левым чипсетом, его и не все форточки выключали, правда я устранил неисправность аппаратным способом с помощью транзистора на проводках.

Согласен, что совместимость полезна. Но приводит вот к таким забавным результатам — которые исправить бывает порой сложнее, чем забросить старое дерево совместимости и начать новое.