C語言操作符——簡單總結
阿新 • • 發佈:2018-11-28
操作符的分類:
1.算術操作符
2.移位操作符
3.位操作符
4.賦值操作符
5.複合操作符
6.關係操作符
7.邏輯操作符
8.單目操作符
9.條件操作符
10.逗號表示式
11.下標引用,函式呼叫,結構成員
算術操作符
種類 | 注意事項 |
---|---|
+ | |
- | |
* | |
/ | 除數不能為 0 |
% | 運算元必須是兩個整數 |
提醒:在進行算術運算時,要注意運算過程中型別的隱式轉換
移位操作符
種類 | 作用 | 注意事項 |
---|---|---|
<< | 按二進位制左移 ,高位拋棄,低位補0 | 類似於*2^n |
>> | 邏輯右移:按二進位制右移,低位拋棄,高位補0; 算術右移:按二進位制右移,低位拋棄,高位補符號位(0或1) |
類似於/2^n 一般用的是算術右移 負數在計算機中按補碼存放 |
提醒:移位操作相比於普通的算術操作,運算時間會短一些,但是在寫程式碼的過程中,算術運算的優勢體現的更明顯一些,首先是程式碼的可讀性強,其次是編譯器會進行算術運算到移位操作的自動轉化優化,因此無需再擔心運算時間的問題。
位操作符
種類 | 作用 | 注意事項 |
---|---|---|
& | 按二進位制進行與運算 | |
I | 按二進位制進行或運算 | |
^ | 按二進位制進行異或運算 | a ^ b ^ a == a |
賦值操作符
種類 | 注意事項 |
---|---|
= | 注意賦值型別 |
複合操作符
種類 | 注意事項 |
---|---|
+= -= *= /= %= |
a += b; 等價於a = a + b; |
>>= <<= |
a >> b 等價於a = a >> b; |
&= I= ^= |
a & b 等價於a = a & b; |
關係操作符
種類 | 注意事項 |
---|---|
> < |
|
>= <= |
|
== != |
==不要與=混淆 != 是不等於的意思 |
提醒:關係操作符時常與邏輯操作符搭配,如 a > 1 && a < 10
但是不能寫成 1 < a < 10
邏輯操作符
種類 | 作用 | 注意事項 |
---|---|---|
&& | 按邏輯與進行判斷 | 區分位操作符& |
II | 按邏輯或進行判斷 | 區分位操作符 I |
提醒:邏輯操作符又稱作短路操作符,如果&&和II的第一個運算元能夠確定整體的值,則第二個運算元不再判斷。
單目操作符
種類 | 作用 | 注意事項 |
---|---|---|
! | 邏輯反 | 返回值為 0 或 1 |
+ - |
求一個數的正負後值 | int a = -1; a = +a; a的值仍然為 -1 |
sizeof() | 求運算元的長度 | 該運算元可以為變數,型別,陣列名,指標 |
~ | 對二進位制數按位取反 | |
++ - - |
對運算元加1或減1 | ++i 和 i++的區別 |
* | 間接訪問操作 | 在指標使用,稱作解引用操作 |
(型別) | 強制型別轉換 |
提醒:不要將sizeof()誤認為是函式
條件操作符
種類 | 作用 | 注意事項 |
---|---|---|
exp1 ? exp2 : exp3 | exp1成立則返回exp2,否則返回exp3 | 條件操作符又稱作三目操作符 條件操作符的優先順序最低 |
提醒:上述條件操作符等價於:
if (exp1) {
return exp2;
} else {
return exp3;
}
逗號表示式
種類 | 注意事項 |
---|---|
exp1, exp2, exp3, …, expn | 從左到右依次執行 但整個表示式的結果為最後一個表示式的結果expn |
提醒:逗號表示式的作用可能不是很明顯,比如看下列程式碼
int a = 1;
int b = a;
if (a > 0) {
...
}
用逗號表示式來表示:
int a, b;
if (a = 1, b = a, a > 0) {
...
}
其實還是第一段程式碼比較好
下標引用,函式呼叫,結構成員
種類 | 注意事項 |
---|---|
[ ] | arr[index] index >= 0 |
() | Fac() ()記憶體放參數,區別形參和實參 |
. -> |
直接訪問結構體成員:student.name 間接訪問結構體成員:student -> name |