1. 程式人生 > >c語言操作符彙總

c語言操作符彙總

分類:

  1. 算數操作符
  2. 移位操作符
  3. 位操作符
  4. 賦值操作符
  5. 單目操作符
  6. 關係操作符
  7. 邏輯操作符
  8. 條件操作符
  9. 逗號表示式
  10. 下標引用、函式呼叫和結構成員

算術操作符      +        -         *        /       %                              
1. 除了 % 操作符之外,其他的幾個操作符可以作用於整數和浮點數。
2. 對於 / 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。
3. % 操作符的兩個運算元必須為整數。返回的是整除之後的餘數。


移位操作符

                 <<   左移操作符                       >>  右移操作符

 

左移分為邏輯左移和算數左移,這兩個左移規則相同

 

左移規則:二進位制數整體向左移動移位,最左邊的一位拋棄,最右邊補0。

例:                                 00000000 00000000 00000000 01010100

      左移一位            0<---0000000 00000000 00000000 01010100<---0

 

右移分為邏輯右移和算數右移,這兩個右移規則不同

 

邏輯右移規則:二進位制數整體向右移動移位,最右邊的一位拋棄,最左邊補0。

例:                                00000000 00000000 00000000 01010100

    邏輯右移一位         0-->00000000 00000000 00000000 0101010-->0

 

算數右移規則:二進位制數整體向右移動移位,最右邊的一位拋棄,最左邊補原來的符號位。

例:                                10000000 00000000 00000000 01010100

    算數右移一位         1-->10000000 00000000 00000000 0101010-->0


位操作符

             按位與 &                        按位或 |                            按位異或 ^    

注:他們的運算元必須是整數


賦值操作符 =           

   注意可以連續賦值,但不建議使用

例: a = b = c+1;   相當於   b = c+1;  c = b;

複合賦值符        +=     -=         *=          /=       %=        >>=        <<=          &=             |=              ^=

用法         i+=1; 就相當於i = i +1;                       其他同理;


單目操作符

! 邏輯反操作

- 負值

+ 正值

& 取地址

sizeof 運算元的型別長度(以位元組為單位)

          int arr[] = {'0','1','2'};

          sz0 = size(arr[0]);

          sz = sizeof(arr)/sizeof(arr[0]);

         可以得到下標為0的元素的型別長度sz0和陣列中的元素個數sz

 

~ 對一個數的二進位制按位取反

           取反時用的補碼

 

-- 前置、後置--         ++ 前置、後置++

           前置++/--,先++/--,再操作

           後置++/--,先操作,再++/--

例:    a = i++;       後置++,先將i的值賦給a,再對i進行++

           b = --i;         前置--,先對i進行--,再將--後的i賦給b

 

* 間接訪問操作符(解引用操作符)

例:           int* p = 0;      建立了一個整形指標變數p,指標變數中存的是地址,要對p的值進行改變,就要解引用

                 *p = 20;       通過p的地址找到儲存塊,將20賦給p

 

(型別) 強制型別轉換

float  a = 3.14;          只要得到整數3,就可以用強制型別轉換  b =(int)3.14,這裡b = 3;


關係操作符    >    <     >=      <=      ==      !=

注意:區分等於== 和 賦值操作符 =


邏輯操作符          邏輯與&&          邏輯或||

注意:區別 邏輯與&& 與按位與& ,邏輯或|| 與按位或|

特點:n = (0 && i++); 邏輯與&& 前運算元若為假,則結果為假,n = 0;後運算元不進行運算,所以i不發生變化

           m = (1 || --i); 邏輯或|| 前運算元若為真,則結果為真,m = 1;後運算元不進行運算,所以i不發生變化


條件操作符      exp1 ? exp2 : exp3

                            就相當於    a>b ? c=a : c=b  或   c = a>b ? a : b      


逗號表示式                exp1, exp2, exp3, …expN

逗號表示式,就是用逗號隔開的多個表示式。
逗號表示式,從左向右依次執行,整個表示式的結果是最後一個表示式的結果。

例:int a = 1;
       int b = 2;
       int c = (a>b, a=b+10, a, b=a+1);

      從左向右依次執行,第一個表示式無意義,第二個表示式得到a=12,第三個表示式無意義,第四個表示式得b=13

       結果是最後一個表示式的結果,所以c = 13;


下標引用、函式呼叫和結構成員

1. [ ]   下標引用操作符
運算元:一個數組名 + 一個索引值
                          int arr[10];                建立陣列
                          arr[9] = 10;               使用下標引用操作符,[  ]的兩個運算元是arr和9。
         
2. ()    函式呼叫操作符
接受一個或者多個運算元:第一個運算元是函式名,剩餘的運算元就是傳遞給函式的引數。

 

3.  . 和 ->    訪問一個結構的成員
                            . 結構體.成員名
                            -> 結構體指標->成員名