1. 程式人生 > >C語言操作符——簡單總結

C語言操作符——簡單總結

操作符的分類:

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