2015-01-17 3 views
3

У меня возникла странная проблема с базовой командой unc «bc» на маке, и я хочу просто убедиться, что правильно ее понимаю. С man-страниц в нем говорится, что он соблюдает порядок операций, который я помню из своих учебных занятий как «Моя дорогая тетя Салли» (умножить, разделить, добавить, вычесть)unix bc command and order of operation

При оценке следующей строки в bc я получаю неожиданное значение

5/2+4+6-8*4+5*7+8 
23 

Однако, если я прохожу и я в скобки порядка операций я уже говорил ранее, я получить другой результат:

(((5/2)+(4+6))-((8*4)+((5*7)+8))) 
-63 

есть ли у меня фундаментальное непонимание команды Ьса , или математике?

+0

Уверен, что ваша скобка ложна, она должна быть (5/2) + 4 + 6- (8 * 4) + (5 * 7) +8. Минус для 8 * 4 продукта не до конца ... –

ответ

2

Мы знаем, что x-y + z не равно x- (y + z). Таким образом, вы совершаете ошибку, ожидая, что 5/2 + 4 + 6-8 * 4 + 5 * 7 + 8 будет равно (((5/2) + (4 + 6)) - ((8 * 4) + ((5 * 7) +8))). Кроме того, вам нужно изучить немного больше о приоритете и усечении операторов в разделе. Например, 5/2, хотя и равно 2,5, усекается до 2. Следовательно, 5/2 + 4 + 6-8 * 4 + 5 * 7 + 8 = 2 + 4 + 6-32 + 35 + 8 = 23 Надеюсь, это помогло

+0

спасибо, я тоже принимал правило «моя дорогая тетя», я думаю, теперь, когда он возвращается ко мне, это «(дорогая) (тетя салли) ". – infomofo

+0

@ infomofo.You всегда приветствуется. Точно, * и/имеют одинаковый приоритет, а + и - имеют одинаковый приоритет. –

+0

И в этом же приоритете вы идете слева направо. – Teepeemm