C語言中文網 目錄
首頁 > C#教程 > C#基礎語法 閱讀:461

C#運算符

< 上一頁C#基本數據類型 C#變量下一頁 >

運算符是每一種編程語言中必備的符號,如果沒有運算符,那么編程語言將無法實現任何運算。

運算符主要用于執行程序代碼運算,例如加法、減法、大于、小于等。

下面我們將介紹算術運算符、邏輯運算符、比較運算符、三元運算符以及運算符的優先級。

算術運算符

算術運算符是最常用的一類運算符,包括加法、減法、乘法、除法等,

具體的表示符號如下表所示。

運算符 說 明
+ 對兩個操作數做加法運算
- 對兩個操作數做減法運算
* 對兩個操作數做乘法運算
/ 對兩個操作數做除法運算
% 對兩個操作數做取余運算

這里需要強調的是:
  • 當對兩個字符串類型的值使用 + 運算符,代表的是兩個字符串值的連接,例如 "123"+"456" 的結果為 "23456" 。
  • 當使用 / 運算符時也要注意操作數的數據類型,如果兩個操作數的數據類型都為整數,那么結果相當于取整運算,不包括余數;而兩個操作數中如果有一個操作數的數據類型為浮點數,那么結果則是正常的除法運算。
  • 當使用 % 運算符時,如果兩個操作都為整數,那么結果相當于取余數。經常使用該運算符來判斷某個數是否能被其他的數整除。

【實例 1】使用 / 和 % 運算符來取得數字 1234 中的千位、百位、十位、個位的值。

根據題目要求,代碼如下。
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("千位" +1234 / 1000);
        Console.WriteLine("百位" + 1234 / 100 % 10);
        Console.WriteLine("十位" + 1234 / 10 % 10);
        Console.WriteLine("個位" + 1234 % 10);
    }
}
執行上面的代碼,效果如下圖所示。

取得數字 1234 的各個位數

從上面的執行效果可以看出,在操作數中只要有一個值是字符串類型的,+ 運算符起到的作用就是連接,而不是相加運算。

邏輯運算符

邏輯運算符主要包括與、或、非等,它主要用于多個布爾型表達式之間的運算。

具體的表示符號如下表所示。

運算符 含義 說明
&& 邏輯與 如果運算符兩邊都為 True,則整個表達式為 True,否則為 False;如果左邊操作數為 False,則不對右邊表達式進行計算,相當于“且”的含義
|| 邏輯或 如果運算符兩邊有一個或兩個為 True,整個表達式為 True,否則為 False;如果左邊為 True,則不對右邊表達式進行計算,相當于“或”的含義
! 邏輯非 表示和原來的邏輯相反的邏輯

在使用邏輯運算符時需要注意邏輯運算符兩邊的表達式返回的結果都必須是布爾型的。

【實例 2】判斷 2017 年是否為閏年。

根據題目要求,閏年的判斷是需要滿足兩個條件中的一個,一個是年份能被 4 整數但是不能被 100 整數,一個是能被 400 整除。代碼如下。
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("2017年是否是閏年:"+((2017 % 4 == 0 && 2017 % 100 != 0) || (2017 % 400 == 0)));
    }
}
執行上面代碼結果如下圖所示。

判斷2017年是否是閏年

從上面的執行效果可以看出,2017 年不是閏年。此外,在實例的判斷表達式中要注意括號的使用,括號可以改變表達式中運算的優先級。

比較運算符

比較運算符是在條件判斷中經常使用的一類運算符,包括大于、小于、不等于、大于等于、小于等于等,具體的符號說明如下表所示。

運算符 說  明
==  表示兩邊表達式運算的結果相等,注意是兩個等號
!= 表示兩邊表達式運算的結果不相等
> 表示左邊表達式的值大于右邊表達式的值
< 表示左邊表達式的值小于右邊表達式的值
>= 表示左邊表達式的值大于等于右邊表達式的值
<=  表示左邊表達式的值小于等于右邊表達式的值

使用比較運算符運算得到的結果是布爾型的值,因此經常將使用比較運算符的表達式用到邏輯運算符的運算中。

【實例 3】判斷 10 是否為偶數。

根據題目要求,判斷某一個數是否為偶數,實際上就是判斷該數是否能被 2 整除,如果被 2 整除后余數為 0,則說明該數為偶數。代碼如下。
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("10是否是偶數:"+(10 % 2 == 0));
    }
}

執行上面代碼,效果如下圖所示。

判斷10 是否為偶數

位運算符

所謂的位運算,通常是指將數值型的值從十進制轉換成二進制后的運算,由于是對二進制數進行運算,所以使用位運算符對操作數進行運算的速度稍快。

位運算包括與、或、 非、左移、右移等,具體的表示符號如下表所示。
運算符 說 明
& 按位與。兩個運算數都為 1,則整個表達式為 1,否則為 0;也可以對布爾型的值進行比較,相當于“與”運算,但不是短路運算
| 按位或。兩個運算數都為 0,則整個表達式為 0,否則為 1;也可以對布爾型的值進行比較,相當于“或”運算,但不是短路運算
~ 按位非。當被運算的值為 1 時,運算結果為 0;當被運算的值為 0 時,運算結果為 1。該操作符不能用于布爾型。對正整數取反,則在原來的數上加 1,然后取負數;對負整數取反,則在原來的數上加 1,然后取絕對值
^ 按位異或。只有運算的兩位不同結果才為 1,否則為 0
<< 左移。把運算符左邊的操作數向左移動運算符右邊指定的位數,右邊因移動空出的部分 補 0
>> 有符號右移。把運算符左邊的操作數向右移動運算符右邊指定的位數。如果是正值,左側因移動空出的部分補 0;如果是負值,左側因移動空出的部分補 1
>>>  無符號右移。和 >> 的移動方式一樣,只是不管正負,因移動空出的部分都補 0

在上面列出的運算符中比較常用的是左移運算符和右移運算符,左移 1 位相當于將操作數乘 2,右移 1 位相當于將操作數除 2。

【實例 4】使用位運算符計算 2 的立方。

根據題目要求,計算 2 的立方就是將 2 向左移兩位得到的結果,代碼如下。
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("2的立方為:"+(2<<2));
    }
}
執行上面代碼,效果如下圖。

計算2的立方

三元運算符

三元運算符也被稱為條件運算符,與后面要學習的 if 條件語句非常類似。

C# 語言中三元運算符只有一個,具體的語法形式如下。

布爾表達式 ? 表達式 1: 表達式 2

其中:
  • 布爾表達式:判斷條件,它是一個結果為布爾型值的表達式。
  • 表達式 1:如果布爾表達式的值為 True,該三元運算符得到的結果就是表達式 1 的運算結果。
  • 表達式 2:如果布爾表達式的值為 False,該三元運算符得到的結果就是表達式 2 的運算結果。

需要注意的是,在三元運算符中表達式 1 和表達式 2 的結果的數據類型要兼容。

【實例 5】使用三元運算符判斷,如果 10 為偶數則輸出偶數,否則輸出奇數。

根據題目要求,代碼如下。
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("10為:"+(10 % 2 == 0 ? "偶數":"奇數"));
    }
}
執行上面代碼,效果如下圖。

判斷10 是否為偶數

【實例 6】使用三元運算符完成兩個數的比較,將其中較大的數輸出。這里將兩個數給 定為 10 和 20。

根據題目要求,代碼如下。
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("將10和20中較大數輸出結果為:"+(10 > 20 ? 10 : 20));
    }
}
執行上面代碼,效果如下圖。

輸出兩個數中的較大數

賦值運算符

賦值運算符中最常見的是等號,除了等號以外還有很多賦值運算符,它們通常都是與其他運算符連用起到簡化操作的作用。

賦值運算符如下表所示。
運算符 說 明
= x=y,等號右邊的值給等號左邊的變量,即把變量 y 的值賦給變量 x
+= x+=y,等同于 x=x+y
-= x-=y,等同于 x=x-y
*= x*=y,等同于 x=x*y
/= x/=y,等同于 x=x/y
%=  x%=y,等同于 x=x%y,表示求 x 除以 y 的余數
++ x++ 或 ++x,等同于 x=x+1
-- x-- 或 --x,等同于 x=x-1

需要注意的是,++ 和 -- 運算符放在操作數前和操作數后是有區別的,如果放在操作數前,需要先將操作數加 1 或減 1,然后再與其他操作數進行運算;如果放在操作數后,需要先與其他操作數進行運算,然后操作數自身再加 1。

運算符的優先級

前面介紹了 C# 中基本的運算符,在表達式中使用多個運算符進行計算時,運算符的運算有先后順序。

如果想改變運算符的運算順序必須依靠括號。運算符的優先級如下表所示,表中顯示的內容是按優先級從高到低排序的。

運算符 結合性
.(點)、()(小括號)、[](中括號) 從左到右
+ (正)、-(負)、++ (自增)、--(自減)、~(按位非)、!(邏輯非) 從右到左
* (乘)、/ (除)、% (取余) 從左向右
+ (加)、-(減) 從左向右
<<、>>、>>>  從左向右
<、<=、>、>=  從左向右
==、!=  從左向右
& 從左向右
| 從左向右
^ 從左向右
&& 從左向右
|| 從左向右
?: 從右到左
=、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、>>>=  從右到左

盡管運算符本身已經有了優先級,但在實際應用中還是建議讀者盡量在復雜的表達式中多用括號來控制優先級,以增強代碼的可讀性。
< 上一頁C#基本數據類型 C#變量下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo