C語言操作符自我總結
+? ? -? ?*? ? /? ? ?%
註意點:
- %號 只能用於整數
2.除數不能為0 - /號,如果兩數都是整數,結果為整數;如果有一個數為小數,結果為小數。
整型提升:凡是針對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填充,右邊丟棄? ? ? ?
- 算術移位 :左邊用原該值的符號位填充,右邊丟棄。
符號位就是最高位,代表這個十進制數的正負:
? ? ?最高位如果是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語言操作符自我總結