C# 快速導覽 - 運算子




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# 運算子

沒有留言: