(1)位操作符(& | ^)
&:(按二進制位“與”)
也就是兩個數的每一位二進制數按照 “與” 的算法,如下:
int a = 3 ,b = 5 ;
c = a & b;
我們首先寫出a和b的二進制數來具體分析:
a:00000000000000000000000000000011
b:00000000000000000000000000000101
則c就是a和b的每一位二進制按照 與 來計算(有0則0,1&1得1)所以c的二進制如下:
c:00000000000000000000000000000001
所以c的數值是1
| :(按二進制位“或”)
也就是兩個數的每一位二進制數按照 “或” 的算法,具體的原理與上述 & 一致,規則為(有1得1)
^ :(按二進制位“異或”)
規則是(相同位0,相異為1)
練習:如不創建第三個變量來實現兩個變量的數值交換:
方法一:可以使用 a=a+b ; b=a-b ; a=a-b;?
方法二:可以使用 a=a^b ; b=a^b ; a=a^b;
(方法二的具體原理讀者可以自己寫出二進制數來計算)
(2)賦值操作符:(=,+=,/=,>>=...)
該操作符的原理很簡單,只需知道具體如何計算即可
如:a+=5 等價于 a=a+5 其余的同理計算即可:
(3)單目操作符:(!,-,+,&,sizeof,~,--,++,*,(類型))
!:“邏輯反”(優先級比較高) 具體意思是 非 也就是
可以反轉一個操作數的真值或假值。換句話說,如果表達式為 true,那么 ! 運算符將返回 false,如果表達式為 false,則返回 true。(其中1代表true,0代表false)
-,+:也就是正負值
sizeof:“計算類型的字節大小”
該操作符切勿認為是一個函數,其作用為計算某一個類型在內存中所占空間的大小,單位為字節。
如:int a ;sizeof a;計算出的大小應該是 4
也可計算數組的長度,如下:
int arr[]={2,4,8};
int b = sizeof(arr)/sizeof(arr[0]) ; 計算出b的大小就是該數組的長度
~ : “二進制按位取反”
也就是某一個數的二進制數每一位都取反(0變為1,1變為0)
--,++ :“自加和自減”
需要注意的是前置和后置的區別
前置++:也就是先使用后自加
后置++:也就是先自加后使用
-- 的情況與之同理
比如 while(a++) 和 while(++a)的區別(還需讀者按照上述規則自行探索)
(類型):“強制類型轉換”
如:int a = (int)3.14 ; 這里原本定義的類型是int型的,但賦值是浮點型,但是使用(int)就是將3.14強制轉換為int型
(4)關系操作符(==,!=,>=,<=)
此類操作符常用于條件語句和循環語句的判斷表達式中,比較簡單,這里不在贅述
(5)邏輯操作符(&&,||)
&& : 邏輯與? ? || : 邏輯或? ?(在計算機中0代表假,1代表真,大于1的數值也是真)
?&& (邏輯與):
① 當邏輯與左邊為false(假),則不再進行邏輯與右邊的判斷,結果為false(假)
② 當邏輯與左邊為true(真)則進行右邊判斷,右邊為false(假),結果為false(假)
③ 當邏輯與左邊為true(真)則進行右邊判斷,右邊也為true(真),則結果為true(真)
?|| (邏輯或):(三種)
① 當邏輯或左邊為false(假),繼續邏輯或右邊的判斷,如果也為false(假),結果為false(假)
② 當邏輯或左邊為false(假),繼續邏輯或右邊的判斷,如果為true(真),結果為true(真)
③ 當邏輯或左邊為true(真),則不再進行邏輯或右邊的判斷,結果為true(真)這里面包含了短路現象:
具體就是在&&左邊的表達式為假的時候(也就是計算出數值為0)將不在執行后面的語句,整體的表達式值為0(假);在 || 左邊的表達式為真的時候(也就是計算出數值大于0)將不在執行后面的語句,整體的表達式值為1(真)
(6)條件操作符(表達式1 ?表達式2:表達式3)
該操作符是一個三目操作符,具體是 表達式1用來判斷,為真的話就取表達式2的值,為假的話就取表達式3的值