C# 運(yùn)算符

2018-09-27 16:27 更新

運(yùn)算符

運(yùn)算符是一種告訴編譯器執(zhí)行特定的數(shù)字或邏輯操作的符號。C# 中有豐富的內(nèi)置運(yùn)算符,分類如下:

  • 算術(shù)運(yùn)算符
  • 關(guān)系運(yùn)算符
  • 邏輯運(yùn)算符
  • 位運(yùn)算符
  • 賦值運(yùn)算符
  • 其它運(yùn)算符

本教程將逐一講解算運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符和其他運(yùn)算符。

算術(shù)運(yùn)算符

下表列出了 C# 支持的所有算術(shù)運(yùn)算符。假設(shè)變量 A 的值為10,變量 B 的值為20,則:

算術(shù)運(yùn)算符實例

運(yùn)算符描述實例
+兩個操作數(shù)相加A + B = 30
-兩個操作數(shù)相減(第一個減去第二個)A - B = -10
*兩個操作數(shù)相乘A * B = 200
/分子除以分母B / A = 2
%取模運(yùn)算符,整除后的余數(shù)B % A = 0
++自增運(yùn)算符,整數(shù)值增加1A++ = 11
--自減運(yùn)算符,整數(shù)值減少1A-- = 9

關(guān)系運(yùn)算符

下表列出了 C# 支持的所有關(guān)系運(yùn)算符。假設(shè)變量 A 的值為10,變量 B 的值為 20,則:

關(guān)系運(yùn)算符實例

運(yùn)算符描述實例
==檢查兩個操作數(shù)的值是否相等,如果相等則條件為真(A == B) 不為真
!=檢查兩個操作數(shù)的值是否相等,如果不相等則條件為真(A != B) 為真
>檢查左邊的操作數(shù)的值是否大于右操作數(shù)的值,如果是則條件為真(A > B) 不為真
<檢查左邊的操作數(shù)的值是否小于右操作數(shù)的值,如果是則條件為真(A < B) 為真
>=檢查左邊的操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是則條件為真(A >= B) 不為真
<=檢查左邊的操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是則條件為真(A <= B) 為真

邏輯運(yùn)算符

下表列出了 C# 所支持的所有邏輯運(yùn)算符。假設(shè)變量 A 為布爾值 true,變量 B 為布爾值 false,則:

邏輯運(yùn)算符實例

運(yùn)算符描述實例
&&稱為邏輯與操作,如果兩個操作數(shù)都非零,則條件為真(A && B) 結(jié)果為 false
||稱為邏輯或操作,如果兩個操作數(shù)中有任意一個非零,則條件為真(A || B) 結(jié)果為 true
!稱為邏輯非運(yùn)算符,用來逆轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為真則邏非運(yùn)算符將使其為假

位運(yùn)算符

位運(yùn)算符作用于位,并逐位執(zhí)行操作。&、| 和 ^ 的真值表如下:

ppp & qp | qp ^ q
00000
01011
11110
10011

假設(shè),如果 A=60,B=13,現(xiàn)以二進(jìn)制格式表示如下:

A = 0011 1100

B = 0000 1101


A & B = 0000 1100

A | B = 0011 1101

A ^ B = 0011 0001

~A = 1100 0011

下表列出了 C# 支持的位運(yùn)算符。假設(shè)變量 A 的值為60,變量 B 的值為13 則:

位運(yùn)算符示例

運(yùn)算符描述實例
&如果同時存在于兩個操作數(shù)中,二進(jìn)制 AND 運(yùn)算符復(fù)制一位到結(jié)果中。(A & B) 將得到 12. 即 0000 1100
|如果存在于任一操作數(shù)中,二進(jìn)制 OR 運(yùn)算符復(fù)制一位到結(jié)果中。(A | B) 將得到 61, 即 0011 1101
^如果存在于其中一個操作數(shù)中但不同時存在于兩個操作數(shù)中,二進(jìn)制異或運(yùn)算符復(fù)制一位到結(jié)果中。(A ^ B) 將得到 49, 即 0011 0001
~二進(jìn)制補(bǔ)碼運(yùn)算符是一元運(yùn)算符,具有“翻轉(zhuǎn)”的位效果。(~A ) 將得到 -61, 即 1100 0011
<<二進(jìn)制左移運(yùn)算符。左操作數(shù)的值向左移動右操作數(shù)指定的位數(shù)。A << 2 將得到 240, 即 1111 0000
>>二進(jìn)制右移運(yùn)算符。左操作數(shù)的值由右移動右操作數(shù)指定的位數(shù)。A >> 2 將得到 15, 即 0000 1111

賦值運(yùn)算符

下表列出了 C# 支持的賦值運(yùn)算符:

賦值運(yùn)算符實例

運(yùn)算符描述實例
=簡單的賦值運(yùn)算符,把右邊操作數(shù)的值賦給到左邊操作數(shù)C = A + B 把 A + B 的值賦給 C
+=加且賦值運(yùn)算符,把右邊操作數(shù)加上左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C += A 相當(dāng)于 C = C + A
-=減且賦值運(yùn)算符,把左邊操作數(shù)減去右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C -= A 相當(dāng)于 C = C - A
*=乘且賦值運(yùn)算符,把右邊操作數(shù)乘以左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C = A 相當(dāng)于 C = C A
/=除且賦值運(yùn)算符,把左邊操作數(shù)除以右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C /= A 相當(dāng)于 C = C / A
%=求模且賦值運(yùn)算符,求兩個操作數(shù)的模賦值給左邊操作數(shù)C %= A 相當(dāng)于 C = C % A
<<=左移且賦值運(yùn)算符C <<= 2 相當(dāng)于 C = C << 2
>>=右移且賦值運(yùn)算符C >>= 2 相當(dāng)于 C = C >> 2
&=按位與且賦值運(yùn)算符C &= 2 相當(dāng)于 C = C & 2
^=按位異或且賦值運(yùn)算符C ^= 2 相當(dāng)于 C = C ^ 2
|=按位或且賦值運(yùn)算符C |= 2 相當(dāng)于 C = C | 2

其它運(yùn)算符

下表列出了 C# 支持的其他一些重要的運(yùn)算符,包括 sizeof,typeof 運(yùn)算和? :。

其它運(yùn)算符實例

運(yùn)算符描述示例
sizeof()返回一個數(shù)據(jù)類型的大小sizeof(int),將返回 4
typeof()返回一個類的類型typeof(StreamReader)
&返回一個變量的地址&a; 將給出變量的實際地址
*指針的變量*a; 將指向一個變量
? :條件表達(dá)式如果條件為真,那么 ? 值為 X : 否則 ? 值為 Y
is判斷一個對象是否是特定的類型If( Ford is Car) // 判斷 Ford 對象是否屬于 Car 類型
as轉(zhuǎn)換,如果轉(zhuǎn)換失敗則引發(fā)異常Object obj = new StringReader("Hello");StringReader r = obj as StringReader;

C# 運(yùn)算符優(yōu)先級

運(yùn)算符優(yōu)先級確定表達(dá)式中項的組合。這會影響到一個表達(dá)式如何計算。某些運(yùn)算符比其他運(yùn)算符有更高的優(yōu)先級,例如,乘除運(yùn)算符比加減運(yùn)算符的優(yōu)先級高:

例如 X = 7 + 3 2;這里,x 被賦值為 13,而不是 20,因為運(yùn)算符 的優(yōu)先級高于 +,所以這里首先進(jìn)行 3*2 運(yùn)算,然后再加上 7。

下表按運(yùn)算符優(yōu)先級從高到低列出各個運(yùn)算符,具有較高優(yōu)先級的運(yùn)算符出現(xiàn)在表格上面,具有較低優(yōu)先級的運(yùn)算符出現(xiàn)在表格下面。在表達(dá)式中,較高優(yōu)先級的運(yùn)算符會優(yōu)先被運(yùn)算。

運(yùn)算符優(yōu)先級實例

分類運(yùn)算符結(jié)合性
后綴() [] -> . ++ - -從左到右
一元+ - ! ~ ++ - - (type)* & sizeof從右到左
乘法* / %從左到右
相加+ -從左到右
移位<< >>從左到右
關(guān)系< <= > >=從左到右
相等== !=從左到右
按位與&從左到右
按位異或| ^從左到右
按位或|從左到右
邏輯 AND&&從左到右
邏輯 OR||從左到右
條件?:從右到左
賦值= += -= *= /= %=>>= <<= &= ^= |=從右到左
逗號從左到右
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號