c語言操作符的分類:
算術操作符,移位操作符,位操作符,賦值操作符,單目操作符,關係操作符,邏輯操作符,條件操作符,逗號表示式,下表引用、函式呼叫和結構成員
算術操作符: + - * /(除) %(取餘)
1.對於除 / 來說,只要有浮點數執行的就是浮點數除法,只有當兩個運算元都為整數時候,才執行整數除法。
/ 運算結果取的是商值,不遵循四捨五入的規律,只保留整數部分。如3/2=1.5 輸出的是 1
用法:可以實現對乙個數的降位,比如153不斷除10,可以依次得到15,1。
2. %兩邊的運算元必須都要是整數,返回的是整出後的餘數。
用法:可以用來實現對數字的拆分,比如153 對10取餘 得到3,153對100取餘 得到53。
移位操作符:<< (左移操作符) >>(右移操作符)
左移操作符規則:移位移動的是二進位制位;左邊拋棄,右邊補0;
例如;int num = 10;
num<<1;
10 的二進位制表示形式為 00000000 00000000 00000000 00001010
左移一位結果 000000000 00000000 00000000 00010100
(結果是十進位制的20)
注意: num在沒有被賦值的情況下,自身的值沒有發生變化,仍然是10。
對比左移前後的變化,可知,左移1位,每位二進位制的數是移動前的2倍。同理,左移2位,結果變成原來的4倍。
因此,左移 n 位, 結果是 原來數值的 2的n次方倍。
右移操作符
移位規則:取決於編譯器。
右移運算分為兩種:(1)邏輯移位:左邊用0填充,右邊丟棄。 (2)算術位移:左邊用改原值的符號位填充,右邊丟棄。
注意:比較兩種移位規則,算術位移更加合理,更符合思考問題的方式,而邏輯位移容易發生改變 數值正負的情況,屬於暴力移 位,不符合邏輯。
對於移位運算子,不能移動負數字,因為這個是標準未定義的。
位操作符:
& 按(二進位制)位與 規則:二進位制的對應位上,有0出0,全1出1
| 按(二進位制)位或 規則:二進位制的對應位上,有1出1,全0出0
^ 按(二進位制)位異或 規則:
二進位制的對應位上,相異為1,相同為0
注意:他們的運算元必須都是整數。
規則:有0為0,全1 出1
按位與的特點:若(a&1)得到1,則a的最後一位為1;
若(a&1)得到0,則a的最後一位為0;
按位異或的特點:a ^ a 得到 0;
賦值操作符:
就是賦值:=、+=、-=、/=、%=、>>=、<<=、&=、|=、^=。
例如,a = a+ 10 可
以寫成 a+=10;
單目操作符:
! 邏輯反 操作
- 負值
+ 正值
& 取位址
sizeof 運算元的型別長度(以位元組為單位)
~ 對乙個二進位制按位取反
-- 前置、後置--
++ 前置、後置++
* 間接訪問操作符(解引用操作符)
(型別) 強制型別轉換
注意:非0即真,只有0表示假。 1,-1,表示的都是真。!(-1) 表示的是假。
sizeof 是操作符,不是函式。 sizeof( 表示式) 中表示式不參與計算, 例如,表示式為s = a +b 事實上s的值沒有發生改變,不是(a+b)。
前置++:先++後運算; 後置++:先運算後++
& 取位址操作,取的是變數,用%p
int a=10;
printf("%p\n",&a); 取得是a 的位址;
printf("%p\n",arr); 取得是陣列首位址 ;
printf("%p\n",&arr);指向陣列首位址位址;
printf("%p\n",a&rr+1);指向的是陣列的末尾位址;
關係操作符:>,> = 、<、<=、!=、==。
注意:= 是賦值運算;==用來判斷相等
邏輯運算子:
&& 邏輯與 規則:有0出0,全1 出1
|| 邏輯或 規則:有1出1,全0 出0
需要格外注意的是:
對於多個邏輯與 && 的運算,比如 a&&b&&c, 如果a&&b值 為假,判斷就停止了,不用繼續往後計算。如果為真,需要往下繼續運算。
對於多個邏輯或 || 運算, 比如a||b||c,如果a||b 為真,判斷就停止了,不用繼續往後計算。如果為假,則需要繼續往後判斷。
逗號表示式:
exp1 , exp2 ,exp3....
逗號表示式,從左向右依次執行。整個表示式的結果是最後乙個表示式的結果。
比如:int a = 1;
int b = 2;
int c = (a>b, a = b + 10, a, b =a + 1);
c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
C語言 , 操作符
例如 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為cout hello world endl 例如 define concatenate x,y x y int xy 10 將會使編譯器把 cout conc...
C語言操作符
操作符的分類 1 算術操作符 2 移位操作符 3 位操作符 4 賦值操作符 5 單目操作符 6 關係操作符 7 邏輯操作符 8 條件操作符 9 逗號表示式 1 算術操作符 1 除了 操作符之外,不能用於浮點數。2 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...