鍍金池/ 教程/ C#/ 運(yùn)算符
循環(huán)
正則表達(dá)式
概述
委托
多態(tài)性
字符串
繼承
結(jié)構(gòu)體
集合
變量
不安全代碼
判斷
反射
異常處理
可空類型
方法
數(shù)據(jù)類型
命名空間
文件 I/O
類型轉(zhuǎn)換
屬性
程序結(jié)構(gòu)
事件
接口
預(yù)處理指令
運(yùn)算符
多線程
匿名方法
索引器
泛型
封裝
常量和文字
基本語法
特性
數(shù)組
環(huán)境配置
運(yùn)算符重載
枚舉

運(yùn)算符

運(yùn)算符是一種告訴編譯器執(zhí)行特定的數(shù)字或邏輯操作的符號(hào)。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)算符實(shí)例

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

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

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

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

運(yùn)算符 描述 實(shí)例
== 檢查兩個(gè)操作數(shù)的值是否相等,如果相等則條件為真 (A == B) 不為真
!= 檢查兩個(gè)操作數(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)算符實(shí)例

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

位運(yùn)算符

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

p p p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假設(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í)例
& 如果同時(shí)存在于兩個(gè)操作數(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
^ 如果存在于其中一個(gè)操作數(shù)中但不同時(shí)存在于兩個(gè)操作數(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ù)的值向左移動(dòng)右操作數(shù)指定的位數(shù)。 A << 2 將得到 240, 即 1111 0000
>> 二進(jìn)制右移運(yùn)算符。左操作數(shù)的值由右移動(dòng)右操作數(shù)指定的位數(shù)。 A >> 2 將得到 15, 即 0000 1111

賦值運(yùn)算符

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

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

運(yùn)算符 描述 實(shí)例
= 簡單的賦值運(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)算符,求兩個(gè)操作數(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)算符實(shí)例

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

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

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

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

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

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

分類 運(yùn)算符 結(jié)合性
后綴 () [] -> . ++ - - 從左到右
一元 + - ! ~ ++ - - (type)* & sizeof 從右到左
乘法 * / % 從左到右
相加 + - 從左到右
移位 << >> 從左到右
關(guān)系 < <= > >= 從左到右
相等 == != 從左到右
按位與 & 從左到右
按位異或 | ^ 從左到右
按位或 | 從左到右
邏輯 AND && 從左到右
邏輯 OR || 從左到右
條件 ?: 從右到左
賦值 = += -= *= /= %=>>= <<= &= ^= |= 從右到左
逗號(hào) , 從左到右
下一篇:命名空間