C# 提供多樣、功能完整的運算子 (operator) ,依運算子結合後運算的優先次序 (precedence) ,如下列表
種類 | 運算子 |
---|---|
主要 | x.y f(x) a[x] x++ x-- new typeof checked unchecked |
一元 | + - ! ~ ++x --x (T)x true false & sizeof |
乘法類 | * / % |
加法類 | + - |
位移 | << >> |
關係和型態測試 | < > <= >= is as |
相等測試 | == != |
邏輯 AND | & |
邏輯 XOR | ^ |
邏輯 OR | | |
條件式 AND | && |
條件式 OR | || |
條件式 | ?: |
指派 | = += -= *= /= %= &= |= ^= <<= >>= ?? |
依功能區分,可分為
- 算術運算子
- 關係運算子
- 邏輯運算子
- 位元運算子
- 指派運算子
- 型態測試運算子
- new 運算子
- typeof 運算子
- sizeof 運算子
- checked 運算子
- unchecked 運算子
- 小數點
- 中括號
- 小括弧
- 跟指標有關的運算子
- 跟命名空間有關的運算子
算術運算子
算術運算子包含加、減、乘、除、取餘數,這些需要兩個運算元 (operand) 構成運算式 (expression) ,如下列表
運算子 | 功能 | 範例 |
---|---|---|
+ | 加 | a + b |
- | 減 | a - b |
* | 乘 | a * b |
/ | 除 | a / b |
% | 取餘數 | a % b |
另外有遞增及遞減運算子,這是單元運算子 (unary operator) ,也就是說只需要一個運算元即構成運算式,但在運算元有前後的差別
運算子 | 功能 | 範例 |
---|---|---|
++ | 前遞增 | ++a |
++ | 後遞增 | a++ |
-- | 前遞減 | --a |
-- | 後遞減 | a-- |
關係運算子
關係運算子都需要兩個運算元,包含小於、小於等於、大於、大於等於,另外有兩個測試相等性的運算子,運算結果會是 bool 型態的數值,不是 true 就是 false
運算子 | 功能 | 範例 |
---|---|---|
< | 小於 | a < b |
<= | 小於等於 | a <= b |
> | 大於 | a > b |
>= | 大於等於 | a >= b |
== | 相等 | a == b |
!= | 不等 | a != b |
邏輯運算子
邏輯運算子包含邏輯非,施用於單一運算元,其他邏輯且、或都需要兩個運算元
運算子 | 功能 | 範例 |
---|---|---|
! | 非 | !a |
&& | 且 | a && b |
|| | 或 | A || b |
另外有一種條件運算子,這是三元運算子 ?: ,需要三個運算元,三者均可為運算式,形式如下
若運算式 expr1 為真,運算結果會是運算式 expr2 計算出的值,若為假,運算結果則是運算式 expr3 計算出的值。
位元運算子
位元運算子進行逐位元運算,例如某 16 位元 (bit) 整數 (integer) 如下
0000111100001111
取其補數 (complement) 該整數會變成
1111000011110000
這樣的位元補數運算子在 C# 是用 ~ 運算子,全部的位元運算子如下表
運算子 | 功能 | 範例 |
---|---|---|
& | 且 | a & b |
| | 或 | a | b |
^ | 互斥或 | a ^ b |
<< | 向左位移 | a << b |
>> | 向右位移 | a >> b |
~ | 取 1 的補數 | ~a |
指派運算子
基本的指派運算子為單一個等號 = ,這是用來將等號右邊的值拷貝給給左邊的變數資料。等號也可以跟其他運算子合用,會直接將結果儲存到原變數之中,如
運算子 | 功能 | 範例 |
---|---|---|
= | 指派 | a = b |
+= | 相加同時指派 | a += b |
-= | 相減同時指派 | a -= b |
/= | 相除同時指派 | a /= b |
%= | 取餘數同時指派 | a %= b |
&= | 位元且同時指派 | a &= b |
^= | 位元互斥或同時指派 | a ^= b |
|= | 位元或同時指派 | a |= b |
<<= | 位元向左位移同時指派 | a <<= b |
>>= | 位元向右位移同時指派 | a >>= b |
?? | 左運算元是 null 就回傳右運算元,反之回傳左運算元 |
型態測試運算子
關鍵字 (keyword) is 用來測試變數是否是某個型態, as 用來進行相容型態的轉換。
new 運算子
關鍵字 new 用來建立物件並且呼叫建構子。
typeof 運算子
關鍵字 typeof 用來取得型態物件。
sizeof 運算子
關鍵字 sizeof 用來取得型態大小。
checked 運算子
關鍵字 checked 用來作溢位檢查。
unchecked 運算子
關鍵字 checked 用來作隱藏檢查。
小數點
小數點 . 用為存取類別 (class) 成員。
中括號
中括號 [] 用於陣列 (array) 存取元素。
小括弧
小括號 () 的計算優先次序最高,因此小括號內的運算式會先被計算,包括型態轉換。
跟指標有關的運算子
星號 * 用來宣告指標 (pointer) , -> 則用來存取指標成員。
跟命名空間有關的運算子
連續兩個冒號 :: 用來指定命名空間。
中英文術語對照 | |
---|---|
運算子 | operator |
優先次序 | precedence |
運算元 | operand |
運算式 | expression |
單元運算子 | unary operator |
位元 | bit |
整數 | integer |
補數 | complement |
關鍵字 | keyword |
類別 | class |
陣列 | array |
指標 | pointer |
您可以繼續參考
基本概念
標記
內建型態
相關目錄
回 C# 快速導覽
回 C# 教材
回首頁
參考資料
Standard ECMA-334 C# Language Specification
msdn: C# 運算子
沒有留言:
張貼留言