當前位置:
首頁 > 知識 > C 運算符

C 運算符

運算符是一種告訴編譯器執行特定的數學或邏輯操作的符號。C# 有豐富的內置運算符,分類如下:

  • 算術運算符

  • 關係運算符

  • 邏輯運算符

  • 位運算符

  • 賦值運算符

  • 其他運算符

C 運算符

算術運算符

下表顯示了 C# 支持的所有算術運算符。假設變數 A 的值為 10,變數 B 的值為 20,則:


運算符 描述 實例
+ 把兩個操作數相加 A + B 將得到 30
- 從第一個操作數中減去第二個操作數 A - B 將得到 -10
* 把兩個操作數相乘 A * B 將得到 200
/ 分子除以分母 B / A 將得到 2
% 取模運算符,整除後的餘數 B % A 將得到 0
++ 自增運算符,整數值增加 1 A++ 將得到 11
-- 自減運算符,整數值減少 1 A-- 將得到 9

實例

請看下面的實例,了解 C# 中所有可用的算術運算符:

using System;namespace OperatorsAppl{

當上面的代碼被編譯和執行時,它會產生下列結果:

Line 1 - c 的值是 31Line 2 - c 的值是 11Line 3 - c 的值是 210Line 4 - c 的值是 2Line 5 - c 的值是 1Line 6 - c 的值是 22Line 7 - c 的值是 21

  • c = a++: 先將 a 賦值給 c,再對 a 進行自增運算。

  • c = ++a: 先將 a 進行自增運算,再將 a 賦值給 c 。

  • c = a--: 先將 a 賦值給 c,再對 a 進行自減運算。

  • c = --a: 先將 a 進行自減運算,再將 a 賦值給 c 。

using System;namespace OperatorsAppl{

運行實例 ?

執行以上程序,輸出結果為:

a = 2b = 1a = 2b = 2a = 0b = 1a = 0b = 0

C 運算符

關係運算符

下表顯示了 C# 支持的所有關係運算符。假設變數 A 的值為 10,變數 B 的值為 20,則:


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

實例

請看下面的實例,了解 C# 中所有可用的關係運算符:

using System;class Program{

當上面的代碼被編譯和執行時,它會產生下列結果:

Line 1 - a 不等於 bLine 2 - a 不小於 bLine 3 - a 大於 bLine 4 - a 小於或等於 bLine 5 - b 大於或等於 a

C 運算符

邏輯運算符

下表顯示了 C# 支持的所有邏輯運算符。假設變數 A 為布爾值 true,變數 B 為布爾值 false,則:


運算符 描述 實例
&& 稱為邏輯與運算符。如果兩個操作數都非零,則條件為真。 (A && B) 為假。
|| 稱為邏輯或運算符。如果兩個操作數中有任意一個非零,則條件為真。 (A || B) 為真。
! 稱為邏輯非運算符。用來逆轉操作數的邏輯狀態。如果條件為真則邏輯非運算符將使其為假。 !(A && B) 為真。

實例

請看下面的實例,了解 C# 中所有可用的邏輯運算符:

using System;namespace OperatorsAppl{

當上面的代碼被編譯和執行時,它會產生下列結果:

Line 1 - 條件為真Line 2 - 條件為真Line 3 - 條件不為真Line 4 - 條件為真

位運算符

位運算符作用於位,並逐位執行操作。&、 | 和 ^ 的真值表如下所示:


p q 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

假設如果 A = 60,且 B = 13,現在以二進位格式表示,它們如下所示:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

下表列出了 C# 支持的位運算符。假設變數 A 的值為 60,變數 B 的值為 13,則:


運算符 描述 實例
& 如果同時存在於兩個操作數中,二進位 AND 運算符複製一位到結果中。 (A & B) 將得到 12,即為 0000 1100
| 如果存在於任一操作數中,二進位 OR 運算符複製一位到結果中。 (A | B) 將得到 61,即為 0011 1101
^ 如果存在於其中一個操作數中但不同時存在於兩個操作數中,二進位異或運算符複製一位到結果中。 (A ^ B) 將得到 49,即為 0011 0001
~ 二進位補碼運算符是一元運算符,具有"翻轉"位效果,即0變成1,1變成0。 (~A ) 將得到 -61,即為 1100 0011,一個有符號二進位數的補碼形式。
<< 二進位左移運算符。左操作數的值向左移動右操作數指定的位數。 A << 2 將得到 240,即為 1111 0000
>> 二進位右移運算符。左操作數的值向右移動右操作數指定的位數。 A >> 2 將得到 15,即為 0000 1111

實例

請看下面的實例,了解 C# 中所有可用的位運算符:

using System;namespace OperatorsAppl{

當上面的代碼被編譯和執行時,它會產生下列結果:

Line 1 - c 的值是 12Line 2 - c 的值是 61Line 3 - c 的值是 49Line 4 - c 的值是 -61Line 5 - c 的值是 240Line 6 - c 的值是 15

賦值運算符

下表列出了 C# 支持的賦值運算符:


運算符 描述 實例
= 簡單的賦值運算符,把右邊操作數的值賦給左邊操作數 C = A + B 將把 A + B 的值賦給 C
+= 加且賦值運算符,把右邊操作數加上左邊操作數的結果賦值給左邊操作數 C += A 相當於 C = C + A
-= 減且賦值運算符,把左邊操作數減去右邊操作數的結果賦值給左邊操作數 C -= A 相當於 C = C - A
*= 乘且賦值運算符,把右邊操作數乘以左邊操作數的結果賦值給左邊操作數 C *= A 相當於 C = C * A
/= 除且賦值運算符,把左邊操作數除以右邊操作數的結果賦值給左邊操作數 C /= A 相當於 C = C / A
%= 求模且賦值運算符,求兩個操作數的模賦值給左邊操作數 C %= A 相當於 C = C % A
<<= 左移且賦值運算符 C <<= 2 等同於 C = C << 2
>>= 右移且賦值運算符 C >>= 2 等同於 C = C >> 2
&= 按位與且賦值運算符 C &= 2 等同於 C = C & 2
^= 按位異或且賦值運算符 C ^= 2 等同於 C = C ^ 2
|= 按位或且賦值運算符 C |= 2 等同於 C = C | 2

實例

請看下面的實例,了解 C# 中所有可用的賦值運算符:

using System;namespace OperatorsAppl{

當上面的代碼被編譯和執行時,它會產生下列結果:

Line 1 - = c 的值 = 21Line 2 - += c 的值 = 42Line 3 - -= c 的值 = 21Line 4 - *= c 的值 = 441Line 5 - /= c 的值 = 21Line 6 - %= c 的值 = 11Line 7 - <<= c 的值 = 44Line 8 - >>= c 的值 = 11Line 9 - &= c 的值 = 2Line 10 - ^= c 的值 = 0Line 11 - |= c 的值 = 2

其他運算符

下表列出了 C# 支持的其他一些重要的運算符,包括 sizeoftypeof? :


運算符 描述 實例
sizeof() 返回數據類型的大小。 sizeof(int),將返回 4.
typeof() 返回 class 的類型。 typeof(StreamReader);
& 返回變數的地址。 &a; 將得到變數的實際地址。
* 變數的指針。 *a; 將指向一個變數。
? : 條件表達式 如果條件為真 ? 則為 X : 否則為 Y
is 判斷對象是否為某一類型。 If( Ford is Car) // 檢查 Ford 是否是 Car 類的一個對象。
as 強制轉換,即使轉換失敗也不會拋出異常。 Object obj = new StringReader("Hello");StringReader r = obj as StringReader;

實例

using System;namespace OperatorsAppl{

當上面的代碼被編譯和執行時,它會產生下列結果:

int 的大小是 4short 的大小是 2double 的大小是 8b 的值是 30b 的值是 20

C# 中的運算符優先順序

運算符的優先順序確定表達式中項的組合。這會影響到一個表達式如何計算。某些運算符比其他運算符有更高的優先順序,例如,乘除運算符具有比加減運算符更高的優先順序。

例如 x = 7 + 3 * 2,在這裡,x 被賦值為 13,而不是 20,因為運算符 * 具有比 + 更高的優先順序,所以首先計算乘法 3*2,然後再加上 7。

下表將按運算符優先順序從高到低列出各個運算符,具有較高優先順序的運算符出現在表格的上面,具有較低優先順序的運算符出現在表格的下面。在表達式中,較高優先順序的運算符會優先被計算。


類別 運算符 結合性
後綴 () [] -> . ++ - - 從左到右
一元 + - ! ~ ++ - - (type)* & sizeof 從右到左
乘除 * / % 從左到右
加減 + - 從左到右
移位 << >> 從左到右
關係 < <= > >= 從左到右
相等 == != 從左到右
位與 AND & 從左到右
位異或 XOR ^ 從左到右
位或 OR | 從左到右
邏輯與 AND && 從左到右
邏輯或 OR || 從左到右
條件 ?: 從右到左
賦值 = += -= *= /= %=>>= <<= &= ^= |= 從右到左
逗號 , 從左到右

實例

using System;namespace OperatorsAppl{

當上面的代碼被編譯和執行時,它會產生下列結果:

(a + b) * c / d 的值是 90((a + b) * c) / d 的值是 90(a + b) * (c / d) 的值是 90a + (b * c) / d 的值是 50

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

C 常量

TAG:程序員小新人學習 |