大一程設-下
東華大學
東華大學資管系
基本程式概念
資管經驗分享
在任何的程式語言裡面,都有運算子,如 + - * /
,我們在學數學的時候都知道,先乘除後加減,看到括號要先算,這個不變的道理。在程式語言裡面也是一樣的,但程式語言內運算子又更多更複雜了,所以當然要向基本運算一樣,幫每個運算子作優先順序跟結合性的訂定。
全部的運算子在看優先順序時,統一先看優先權高低,再看結合性。
100 + 20 = 120
a + b
請不要搞混,要背熟哦~
元代表運算元的意思,一或二就代表這個運算子一次要搭配幾個運算元。
以 !
為例,他就是一元運算子,表示 NOT
,所以我們再打 code 的時候通常會打 if(!bool_variable)
,這個 bool_variable 是一個布林變數(變數是一個運算元),所以!
搭配一個運算元。
以四則運算的 +
為例,他是二元運算子,所以我們通常會打 a+b
,你發現它搭配了兩個運算元 a
跟 b
。
以正負號的 +
或 -
為例,他是一元運算子,正號我們通常會省略,負號我們通常會打 -10
、-a
,要搭配一個運算元。
接下來很重要的名詞就是結合性,每個運算子都會有結合性。而結合性有左結合與右結合兩種。
左與右的差別是在做運算的時候從哪邊過去為優先。
基本的四則運算運算子都是左結合。
3 + 5 + 8 + 10
,因為 +
是左結合,所以從左邊優先,他其實是這樣。
(((3 + 5) + 8) + 10)
記得看到括號要先算!所以你會發現他是左邊優先一直往右
關係運算子也都是左結合。如 >
、>=
、<
、<=
a > b > c > d
,因為是左結合所以會變成 (((a > b) > c) > d)
。
其他的像 ==
、!=
、||
、&&
也都是左結合。
當然還有更多的左結合,可以看下面的參考連結。
右結合只有三類,分別是一元運算子、三元運算子、指派運算子
指派運算子像是 =
、+=
、-=
、*=
、/=
等等的這些。
請注意,實際上不會這樣寫下面這樣,我只是幫你了解右結合
因為我們知道指派運算子是右結合,所以會像這樣。
(a += (b += c))
,內層括號會優先算,且右結合,所以會從右邊往左推。
但在實務上程式碼不會這樣寫,太弔詭了。
a += b += c
他的運作是:
a = a + (b += c)
又可以再拆成
a = a + (b = b + c)
你會發現不就是 a = a + b + c
嗎…
希望你有充分了解左結合與右結合摟,之所以認真談論這個,是因為指標運算很重視優先權跟結合性,所以希望你搞懂!
全部的運算子在看優先順序時,統一先看優先權高低,再看結合性。
這邊網路上已經有許多大神都已經整理好了,參考連結直接給大家!
可能不是每個運算子大家都了解,趁這個機會知道他們在幹嘛吧,可以多利用 google 哦!
參考連結 - 1
參考連結 - 2
請記得回去看指標的這篇喔,了解指標的運算! -> pointer 實作一般陣列,以及 1-d dynamic array