2015-01-17 131 views
3

我在mac上遇到了基本的unix「bc」命令的一個奇怪問題,我想確保我正確理解它。從手冊頁,它表示它尊重操作的順序,我記得我的學生時代是「我的親愛的莎莉姐姐」(乘,除,加,減)unix bc命令和操作順序

當在bc中評估下面的字符串時,意外的值

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

但是,如果我辦理,我圓括號我先前所說的操作順序,我得到了不同的結果:

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

我是否有bc命令的根本誤解,還是數學?

+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/2 + 4 + 6-8 * 4 + 5 * 7 + 8, +((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