關於運算子

運算子是專門用來處理資料運算的特殊符號,變數結合運算子形成完整的運算式。運算子的種類相當多,設定變數值的等號「=」便是其中一例,數學運算經常使用的四則運算符號「+」 、「-」、「*」以及「/」亦是相當普遍的運算子, C# 提供具備各種功能的運算子,這一篇教學討論 C# 提供的各種運算子以及運算式。

運算子結合一個或一個以上的運算元,形成邏輯運算式,並且回傳運算結果,運算元可能是某個特定型態的資料值,例如一個整數 、 Unicode 字元、布林值,甚至是一段運算式,在更多的情形之下通常是用以儲存特定資料型別的某種型別變數。
以下這一行程式碼運用加法運算子「+」進行兩個整數的加總運算:
value = 5 + 10 ;
這是一行非常簡單的數學運算式,緊接著這一節,讓我們來看看其中與運算子有關的一些概念。

運算元與運算子

運算子針對運算元進行運算,同時產生運算結果,運算式本身必須承接此運算結果,無論將其儲存於變數或是直接運用於其他的運算式之中,以底下的運算式為例:
value = 10 * 100 ;
在這個運算式當中, 10 以及 100 均是運算元,而 * 則是算術運算子當中的乘法運算子,「=」則為設值運算子,以下的圖示說明其中的邏輯原理。



其中的「*」進行 10 以及 100 的乘法運算,結果值 1000 本身又成為一個運算元,經由 = 儲存至左邊的變數 a。

除了數字,上述的運算元 5 以及 10 也可以是變數,例如以下的程式片段:
firstValue = 5 ; 
secondValue= 10 ;
intValue = firstValue + secondValue ;
一個運算子根據連接的運算元數目,分為一元運算子、二元運算子以及三元運算子,以上式為例,其中的 + 為二元運算子,因其對 firstValue 以及 seconfValue這兩個運算元進行運算。

運算元本身如果是一個變數,其中儲存的值可能會在運算過程被改變,例如承接加總運算結果的 intValue 變數。你應該非常清楚運算子的運算邏輯,有效的掌控運算元儲存值的變化情形。

某些運算子只會使用在基本型別的運算式,有一些則運用在物件型別上面,這些運算子通常是將一個物件指定給物件型別變數的設值運算子「=」,或是比較兩個物件是否相等的比較運算子,例如「==」與「!=」等等。

運算子(Operators)分類

運算子不同於關鍵字,每一個運算子都是一種特殊符號,例如應用於數學四則運算之 「+」 、「-」、「*」以及「/」等數學運算子,或是用於比較兩個數值的「>」、「<」以及「=」關聯運算子。這些符號被運用於各種運算式,完成特定運算, C# 定義的運算子依其功能可以分為幾大類,下表簡要列舉說明。

運算子分類說明
設值運算子(Assignment)將運算子右方運算元所代表的值儲存至左方的運算元,例如 = 、 += 、 -= 、 *= 以及 /= 等等。
遞增、遞減(Increment、decrement)將運算元所代表的值經過運算,例如減一個值或是加一個值之後,重新指定儲存至本身或是其他的運算元,包含「++」、「--」。
算術運算子(Arithmetic)數學四則運算符號 + 、 - 、 x 、 / 以及一個模數運算子(%),這一類的符號針對兩個指定的算元作數學四則運算, % 則用以取得兩個運算元相除之後的餘數。
關聯(Relational) 進行兩個運算元的比較運算,其中包含了大於(>)、小於(<)、等(==)、不等於(!=)、小於等於(<=)以及大於等於(>=)。
邏輯布林(Logical Boolean)針對兩個指定的運算元所回傳的布林值,進行邏輯運算,其中包含了AND(&&)、OR(||)以及NOT(!)
位移(Shift)進行運算元的位元移位運算, << 與 >> 。
條件式(Conditional)條件式三元運算子, ?: 。


沒有留言: