對於以中序表示式為主的程式語言,不實現運算子優先順序,統一求值順序(例如從左往右)會是個好主意嗎?

時間 2021-05-30 00:27:55

1樓:baozii

題主,你想通過統一結合性的方式來解決優先順序問題是做不到的,結合性本來就是在優先順序相同的條件下才啟用的乙個特性

優先順序主要是為了避免括號的過度使用,題主你要是取消優先順序,必然要有括號來做補充

比如(1+2)*(3+4),如果不使用括號,你刻畫那個語言是表達不出來的,換個角度說,沒有括號就意味著你那個語言沒有「棧」

如果有括號的話,確實可以沒有優先順序,比如LISP

總結:結合性解決不了優先順序問題,全部改成左結合或者右結合都影響不了優先順序,唯一能解決優先順序問題的是括號

2樓:RednaxelaFX

Smalltalk就是這麼搞的啊。實現起來特別方便,習慣了之後讀起來也特別方便,因為要改變求值順序的地方肯定都加了括號,一目了然。

就看這語言是設計出來給誰用的唄。只要使用者都不介意這個也沒啥。

3樓:丁長老

這要重新定義數學意義上的優先順序順序,然後大家才覺得不彆扭。

否則好處沒有,而且容易帶來bug

但是卻不管優先順序怎麼定義,膽小的程式猿們都會用括號來控制運算範圍多打個括號,少點出bug的可能。

反正是電腦計算,開心的很。

C語言中的表示式怎麼分類?

C十十20年 首先分為兩大類 型別表示式和數值表示式。型別表示式常用在new的後面,以及作為型別實參例項化模板,參見 C 程式設計精要教程 例如new int 4 4 中的int 4 4 便是型別表示式,還有一種函式型別表示式如int int,int 等。數值表示式是能計算出數值的表示式,包括布林值...

python中的「表示式,語句,函式,方法」四者各指什麼?其之間有何區別?

Radjedef 語句?不就是語句嗎?函式和方法的區別在於,乙個是使用者自己寫的功能,而方法是模組中封裝起來的,函式你不知道名字,是不能使用的,因為你不知道這個函式,但是方法可以在宣告這個變數,然後運用 運算子使用。其實函式和方法都是解決問題的工具,區別僅僅在於乙個是封裝好的,乙個是由你自己設計的 ...

在c語言中,表示式5 3的結果是什麼?

正常思路 由於邏輯運算子優先級別低於比較運算子同時這兩種都低於算術運算子,因此先考慮後半部分,4 0真值為1,而8 1的真值為0.再考慮或左邊的表示式,5 3 2顯然真值為1最終結果為1 0當然結果為12 有 將表示式分成兩部分左邊的是5 3 2顯然其真值為1因此1 任意真值都為1不用算後面的了。真...