[.net 面向對象編程基礎] (6) 基礎中的基礎——運算符和表達式

[.net 面向對象編程基礎] (6) 基礎中的基礎——運算符和表達式     html

     

     提及C#運算符和表達式,小夥伴們確定覺得很簡單,其實要用好表達式,不是一件容易的事。一個好的表達式可讓你作事半功倍的效果,好比三元表達式,可讓你少寫N多個ifcase語句。         面試

     表達式 由 操做數(operand 和 運算符(operator) 構成 正則表達式

1.運算符分類和優先級  編程

2.運算符按操做數目分類  測試

一元運算符spa

-x  x++  x--.net

二元運算符code

x+y  x+1htm

三元運算符對象

c ? x : y 

3.表達式分類

   按運算符數目可分爲:一元表達式,二元表達式,三元表達式

   按用途分類:正則表達式、Lambda表達式等等。

   關於這些複雜類型的表達式,後續會再做詳細說明。 

要點: 

 1.   / 除法運算符  5/2=2   (並不是四捨五入,而是捨去小數)

 2.   %取模運算符  5%2=1  5.0%2.2=0.6 (2數整除第1數的餘數)

 3.  ++ 遞增運算符  --  遞減運算符 

     以上兩個運算符 ,能夠在前也能夠在後, 可是在前和在後,其執行順序不一樣 例如:

     int a=1; int b=a++;

     運算符在後,則程序先把a的值賦給b,再對a執行+1

     其運行結果爲: a=2  b=1

     若是寫成下面的例子:

     int m=1;int n=++m;

     則執行完之後結果爲: m=2 n=2;

     實際上至關於 int m=1; m=m+1; int n=m;

4.位移運算符<<(左移)  和 >>(右移)

這兩個運算符比較不經常使用,按官方的理解稍有點複雜

能夠這樣理解:其實就是數據轉換成二進制的左右移動;

右移左補0,左移右補0,後面多出來的部分去掉。

如:把89右位移一位,能夠這樣計算:

string flag = Convert.ToString(89, 2); //這是把你的89轉爲2進制數。。

//flag結果:1011001

//你要右位移,左邊補個0,後面多出來一位去掉

int j = Convert.ToInt32("0101100", 2); //再把2進制轉化了10進制數。。

//結果:44

//位移就是這麼簡單 

5.邏輯異或運算符 ^

   對於簡單邏輯運算符 & || 咱們比較熟悉了,但對於異或好多人就  不瞭解,甚至不多用到

理解這個運算符,首先它雖然是邏輯運算符,但也是能夠運算整數的

先說布爾運算,簡單說,就是兩個操做數不一樣,則爲真;相同時爲假

如:true ^ true=false; false^false=false; true ^false=true; false ^true=true;

操做整數時,則進行位運算,如:

100^45=73

數值運算舉例

按位異或的3個特色:

(1) 0^0=0,0^1=1  0異或任何數=任何數

(2) 1^0=1,1^1=0  1異或任何數-任何數取反

(3) 1^1=0,0^0=0  任何數異或本身=把本身置0

例如:10100001^00010001=10110000

按位異或的幾個常見用途:

(1) 使某些特定的位翻轉

例如對數10100001的第2位和第3位翻轉,則能夠將該數與00000110進行按位異或運算。

  10100001^00000110 = 10100111

(2) 實現兩個值的交換,而沒必要使用臨時變量。

例如交換兩個整數a=10100001b=00000110的值,可經過下列語句實現:

    a = a^b;   //a=10100111

    b = b^a;   //b=10100001

    a = a^b;   //a=00000110

 

(3) 在彙編語言中常常用於將變量置零:

    xor   aa

(4) 快速判斷兩個值是否相等

舉例1: 判斷兩個整數ab是否相等,則可經過下列語句實現:

        return ((a ^ b) == 0)

  1. 字符和字符串運算

因爲字符能夠隱式轉爲整型,如 ‘a’+6=103  a被轉爲Unicode 97

‘a’*’b’=9506       至關於 97*98

‘a’>’b’結果爲false  至關於97>98 返回false

‘a’ +」早上好」  返回 「a早上好」  

因而可知。不一樣類型運算在C#中會先執行一次隱式轉換

6.小測試

最後,來一道常常在面試的時候,超級傻B的面試題,首先我在面試的時候,毫不會出這種題。 

            int a = 0, b,c;           
            b = (a++)+ 2;
            c= (++a) + 2;
            c= (a == b ? a+b : a+c);
            Console.WriteLine("a="+a+";b="+b+";c="+c);
            Console.ReadLine(); 

 如上代碼,請問輸出結果是什麼? 

==============================================================================================

返回目錄

 <若是對你有幫助,記得點一下推薦哦,有不明白的地方或寫的不對的地方,請多交流>

============================================================================================== 

相關文章
相關標籤/搜索