2012-09-03 60 views
-1

爲什麼在大多數編程語言中,數學運算符優先級與邏輯運算符優先級不同。數學VS邏輯運算符優先級

意義:爲什麼x/y * z評估爲(x/y) * z使/具有相同的優先級爲*但在邏輯運算符x || y && z將評估爲x || (y && z) 那麼,有沒有這種區別(一些硬件原因,優化技術),或一個合乎邏輯的理由它只是編程語言創建者決定使它們的方式?

+2

考慮'x + y * z'。算術運算符也有一個優先級層次結構。 –

+0

不是線索。無論如何,我總是把這些東西甩開。我,(以及任何不幸不得不維護/增強我的代碼的人)不必認真考慮。 –

+0

@GregHewgill我和你在一起100%,但我無法想出爲什麼兩者都不具有相同的優先順序的理由..他們似乎更像(/和*)比(*和+)來我 – zeacuss

回答

3

這不是關於編程。曾經使用布爾代數? AND優先於OR,布爾代數從17世紀開始(儘管我不知道這個約定是什麼時候發生的)。這兩者也被寫爲*和+,這在這方面提供了一個線索(但可以在其他方面混淆)。

編程語言設計者只是把這些優先規則放在一邊,就像他們繼承算術運算符的優先級一樣。

0

可能只是編程語言創建者決定製作它們的方式。

更具體地說,在缺少括號的情況下,程序員可能希望在OR之前評估AND語句。

換句話說||更像是「從左到右的加減」,並且更像是「從左到右的乘法」

還記得那個! (不)的優先級高於& &(AND)