1. 程式人生 > >C語言操作符自我總結

C語言操作符自我總結

符號 多個 一個 || 如果 移位 進行 常見 signed

1.算數操作符:
+? ? -? ?*? ? /? ? ?%

註意點:

  1. %號 只能用於整數
    2.除數不能為0
  2. /號,如果兩數都是整數,結果為整數;如果有一個數為小數,結果為小數。

整型提升:凡是針對char,short型的數學運算,此時都會隱式轉換為?int?型
(因為CPU運算一般以整型為基本單位)
算數轉換:

long double
double 8個
float 4個
unsigned long int
long int 4個
long long 8個
unsigned int
int 4個
short 2個字節

如果某個操作數的類型在上面這個列表中排名較低,那麽首先要轉換為另外一個操作數的類型後執行運算。

警告: 但是算術轉換要合理,要不然會有一些潛在的問題。

2.移位操作符
? ? ? ?<< 左移操作符? ? ? ? 左移相當於乘以2

? ? ? ?>> 右移操作符? ? ? ? 右移相當於除以2

左移操作符:左邊拋棄,右邊補0

右移操作符:1. 邏輯移位 :左邊用0填充,右邊丟棄? ? ? ?

  1. 算術移位 :左邊用原該值的符號位填充,右邊丟棄。

符號位就是最高位,代表這個十進制數的正負:

? ? ?最高位如果是0,就是正數,

? ? ?最高位如果是1,就是負數,

註意:如果右移一個負數(算術移位),左邊補1,沒多大意義

3.位操作符(都是二進制位來說,雙目操作符)
& 按位與? ? ? ? ?兩個操作數都為1,結果才是1

|? 按位或? ? ? ? ?兩個操作數都為0,結果才是0

^ 按位異或? ? ? 兩個操作數相同,結果是0,兩個操作數不相同,結果是1

~ 按位取反? ? ? 按位取相反數? 0變成1,1變成0

4.賦值操作符(雙目操作符)
復制操作符最常見的就是“=”,賦值操作符可以連續使用,連續賦值
復合賦值操作符:

+=? ? ? ? *=? ? ?? ? /=? ? ? %=? ? ? >>=? ? ?<<=? ? ? ?&=? ? ? ? |=? ? ? ?^=

5.單目操作符
! ?????邏輯反操作

  • ?????負值
  • ?????正值
    & ?????取地址
    sizeof ???操作數的類型長度(以字節為單位)
    (如果要計算數組的長度,則數組在哪裏定義,在哪裏計算)
    ~ ?????對一個數的二進制按位取反
    -- ?????前置、後置--
    ++ ?????前置、後置++
  • ?????間接訪問操作符(解引用操作符)
    (類型) ???強制類型轉換
    註意:*? 間接訪問操作,這個會在指針裏面廣泛用到。

++i,--i 先運算,再使用

i++,i-- 先使用,再運算

6.關系操作符

=
<
<=
!= ?用於測試“不相等”
== ???用於測試“相等”

7.邏輯操作符
&& ??邏輯與? ? ? ?兩個條件同時滿足
|| ?????邏輯或? ? ? ?兩個條件至少滿足一個

特別:
短路性:&&左側表達式為假時,右側表達式不會進行求值

? ? ? ? ? ? ? ? ? ? ?||左側表達式為真時,?右側表達式不會進行求值

8.條件操作符(C語言中唯一 一個三目運算符)
exp1 ? exp2 : exp3? ?

exp1 為真 結果為exp2 為假 結果為exp2

9.逗號表達式
exp1, exp2, exp3, …expN

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

C語言操作符自我總結