1. 程式人生 > >C語言入門---操作符

C語言入門---操作符

1.算術運算子

加+ 減- 乘 除/ 求模% 自增++ 自減–*

一元運算子:+(正號)、-(負號)、++(增1)、–(減1)。 二元運算子:+(求和)、-(求差)、(求積)、/(求商)、%(求餘)。 一元運算子的優先順序一般高於二元運算子。 加+ 減- 乘運算都是既可以用於浮點數運算又可以用於整數運算。 相除運算中,兩個運算元(除數和被除數)只要有一個為浮點數,結果就為浮點數,兩個運算元都為整數,結果也取整數,且被除數不能為0,否則編譯出錯。 求模運算中,兩個運算元都必須為整數,且不能對0求模。 自加(減)運算又分前置++(–)與後置++(–)。前置++(–)是對原運算元加一(減一)再引用,後置++(–)是對原運算元引用後再加一(減一),這兩種自增運算結果在有返回值的情況下結果都是運算元加(減)一。

2.關係運算符

大於> 小於< 大於等於>= 小於等於<= 不等於!= 等於== 前 4 個的優先順序高於最後兩個 關係運算符結果返回值為true或false 4.邏輯運算子 與 && 全真結果為真,有零結果就為假 或 || 全假結果為假,有1 結果就為真 非 !非0則為真 這三種邏輯運算子,邏輯非 ! 的優先順序最高,邏輯與 && 次之,邏輯或 || 優先順序最低

4.位操作符

&(與)、|(或)、^(異或)、~(取反) 左移<<等效於乘二,左邊拋棄,右邊補零 右移>>等效於除以2,在右移運算中右邊拋棄,左邊空位由零補充還是符號位呢? 其實答案由具體的 C 語言編譯器實現來決定。在通常情況下,如果要進行移位的運算元是無符號型別的,那麼空出的位將用 0 進行填充;如果要進行移位的運算元是有符號型別的,則 C 語言編譯器實現既可選擇 0 來進行填充,也可選擇符號位進行填充。 如果被移位的運算元的長度為 n,那麼移位的數量必須大於等於 0 且小於 n

5.賦值運算子

C 語言共提供了 11 個賦值運算子,均為二元運算子,其中僅有一個為基本賦值運算子 =,其餘 10 個均是複合賦值運算子,即: 基本賦值運算子:=。 複合賦值運算子:+=(加賦值)、-=(減賦值)、*=(乘賦值)、/=(除賦值)、%=(求餘賦值)、 <<=(左移賦值)、>>=(右移賦值)、&=(按位與賦值)、|=(按位或賦值)、*A=(按位異或賦值)。 賦值操作的優先順序較低,僅高於逗號運算子

6.*運算子和&運算子

&是取地址運算子 取址運算子的運算元必須是在記憶體中可定址到的地址。換句話說,該運算子只能用於函式或物件(例如左值),而不可以用於位欄位,以及那些還未被儲存類修飾符 register 宣告的內容。 *運算子是解引用運算子,當已具有一個指標,並且希望獲取它所引用的物件時使用。

7.下標運算子[]

藉助於下標運算子 [](subscript operator),可以獲取陣列中單獨的元素。下標運算子需要兩個運算元。在最簡單的情況下,一個運算元是一個數組名稱,而另一個運算元是一個整數。

8.點運算子與箭頭運算子

箭頭運算子的左運算元必須是一個指標,它指向一個結構或聯合型別。右運算元是該結構或聯合成員的名字點 點運算子的左運算元必須是一個結構或者一個聯合,而右運算元必須是該型別(結構或聯合)成員的名字。

9.條件運算子

條件運算子(conditional operator)有時候也稱為三元運算子,因為它是唯一需要 3 個運算元的運算子: 條件 ? 表示式1 : 表示式2 在計算完條件之後,有一個序列點。如果結果不等於 0(換句話說,如果條件計算結果為 true),則只有第二個運算元(也就是表示式 1)會被計算,並且表示式 1 的值就是整個表示式的結果。

10.逗號運算子

逗號運算子是二元運算子: 表示式1 , 表示式2

逗號運算子確保運算元被順序地處理:先計算左邊的運算元,再計算右邊的運算元。右運算元的型別和值作為整個表示式的結果。左運算元只是為了副作用需要而被計算,它其值會被丟棄。