c語言操作符

2021-08-20 19:40:09 字數 2508 閱讀 8345

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 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...