程式中很常會看到千奇百怪的運算式,這些運算式都隱藏著各種運算元和運算子,這些是什麼呢?讓我們來一探究竟。
運算元是指變數、常數這類(如:A、B、C、Data、123等),運算子是指運算符號(如:+、-、*、/、%、==、<、&&等這類型),這邊就要介紹C#的運算子以及怎麼使用。
那麼運算特性可以分為算術運算、遞增與遞減運算、關係運算、邏輯運算、位元運算、移位運算、複合指定運算、三元運算。由於這麼多的運算式,倘若說一個運算式同時有眾多的運算元該怎麼辦?數學是先乘除後加減,那程式呢?最後會說明運算元的優先順序不用擔心,接下來就一一來跟大家分享。
一、算術運算
時常看到的加、減、乘、除還有餘數這些一般數學上都會看到的運算在程式中稱為「算術運算」。用圖表來跟大家說明,請看下圖。
(先假設整數變數A=17、B為運算結果)
二、遞增與遞減運算
這就是連續使用++或--來做運算,它有區分成「前置式」、「後置式」兩種,前置式運算子在前(ex:++A),後置式運算子在後(ex:--A)。
既然都是數學運算已經有了算術運算為何還要有遞增與遞減運算呢?我猜想應該是因為可以縮短程式的長度,當變數很長的時候,可以藉由遞增遞減運算來縮短程式長度吧!很多程式很常都會用到或看到,不妨我們就來看一看,請看下圖。
(先假設整數變數A=17、result為運算結果)
我覺得比較好記的方式是:
遇到"++"or"--"的時候,先看變數在哪裡,
此運算子在變數前,就先做"+ 或 -",
運算子在變數後,就先讓變數賦予result值。
如果不好記也可以用自己的方式記也沒問題。
三、關係運算
這邊可以做為判斷的依據,就是去做比較可以是數字大小、也可以是變數的值大小做判斷,它的結果值只會出現兩種:真(true或1)、假(False或0),這兩種答案也就是資料型態中的bool,我們就來看一看它的運算子有哪些吧!如下圖:
(假設整數變數為A=5、B=10)
四、邏輯運算
這個運算可以做一些更複雜的條件判斷,結果也是只有兩種:真(true或1)、假(False或0)兩個答案而已。通常會用在兩者關係運算式中間,例如:(a > b) && (c > d),這類型的連結,那麼有哪些邏輯運算子可以用呢?如圖所示:
(這邊假設整數變數X、Y,以0代替假(False),以1代替真(True))
五、位元運算
這個運算是要將數值先轉為二進制再做運算,最後再轉回十進制,那麼有哪些運算子如圖所示:
(假設整數變數A=3、B=6)
Step1:先轉二進位,也就是A=0011,B=0110
Step2:再看運算子做運算。
六、移位運算
這個運算也是要先轉二進制後再做移位動作,有左移”<<”和右移”>>”兩種。如圖所示:
(先假設整數變數A=24,二進制也就是00011000)
注意:
當左移的時候,後面都是補0;
當右移的時候,若沒有帶符號的狀況下,前面都是補0,若有帶符號並且是負數的話,前面就是補1。
七、複合指定運算
這個運算就是將一個常數、變數或運算後的值指定給某個變數。最簡單的就像是:B = 5; 這樣的式子,就是把常數5指定給B這個變數,也就是給予B這個值。類似像這樣的運算有哪些呢?
(先假設整數i=3、j=9)
(二進制 i=0011 、j=1001)
八、三元運算
這是利用Bool方式的條件式來判斷決定要傳回哪一個值,文字太難懂,用例子來說明:
result = A > B ?C :D
假如A>B是正確的(true),則result = C;
假如A>B是錯誤的(false),則result =D。
它的語法是這樣:
變數 = 條件判斷 ? 變數1 :變數2
條件判斷若為true,則輸出為變數1
條件判斷若為False,則輸出為變數2
這樣的方法也等同於if....else...的判斷句
if(A > B)
result = C;
else
result = D;
九、運算子的優先順序
運算子都介紹完啦~接下來就來說說這些運算的優先順序:
OK~運算的部分就介紹到這邊啦~
下次會說流程控制這部份,也就是if...else...、switch...等等