c語言操做符小結

* 算數操做符(+,-,,/,%)

+,-,*,正常運算就好,但"/"和"%"較爲特殊須要注意!
"/":
1)當該符號兩端數據類型都爲int時,輸出類型爲int 。若符號兩端數據類型不一樣時,則按精度小的類型進行計算。精度大的數被隱式類型轉換(編譯器自動轉換)爲精度小的類型。
2)當除數爲一個常數0時,編譯器彙報編譯錯誤。當除數爲一個一個變量,變量的值爲0時,編譯經過但運行時會錯。
"%":
1)該符號只針對int 整型有效。
2)當符號右端爲常數0或變量值爲0時,狀況與"/"相同。數組

* 移位操做符(<<,>>)

ps:不要對負數進行移位操做,這是未定義行爲!
"<<"左移操做符:
1)按二進制移位;
2)左移n位至關於十進制的*2的n次方;
3)左邊拋棄,右邊補0;
4)左移後原數值在沒有被賦值的狀況下是不變的;ide

#include<stdio.h>
#include<stdlib.h>
 int main() {
    int num = 10;
    printf("%d\n",num<<1 ); 
    printf("%d\n", num);
    printf("%d\n", num=num<<1);
    system("pause");
    return 0;
}

結果爲:
c語言操做符小結
">>"右移操做符:
1)按二進制移位;
2)右移n位至關於十進制的 / 2的n次方;
3)邏輯移位:左邊補0,右邊拋棄
算數移位:左邊補符號位,右邊拋棄
4)右移後原數值在沒有被賦值的狀況下是不變的;(狀況同上,再也不作過多贅述)code

* 位操做符(&,|,^,~)

ps:按二進制位操做,操做數必須爲整數
"&":
全1爲1,不然爲0
"|":
全0爲0,不然爲1
"^":
相同爲0,相異爲1
"~":
0變1,1變0blog

*賦值操做符( = )

修改變量的值,能夠連續連續賦值(例:a=x=y+1),但強烈不建議這麼寫,可讀性差。
ps:此處補充一點:賦值與初始化的區別
賦值:修改值
初始化:申請內存空間,放值到內存中索引

* 複合操做符(+= ,-= ,= ,/= ,%= ,>>= ,<<= ,&= ,|= ,^= )

複合運算符與其餘運算符功能同樣,但可使代碼更簡潔內存

int x=10;
x=x+10;
x+=10;//複合賦值,效果與上式相同

* 單目操做符(!,- ,+ ,& ,sizeof ,~,--,++, ,(類型))

"!"邏輯反操做
"-"負值
"+"正值
"&"取地址
"sizeof"操做數的類型長度(以字節爲單位):
編譯過程當中求值,運行時才申請內存
"~"對一個數二進制按位取反
"--"前置,後置 --
"++"前置,後置++:
前置後置的區別:
a)不取表達式的值,等價
b)取表達式的值:
前置,返回自增(自減)後的值;
後置,返回自增(自減)前的值
" * "解引用操做符
"(類型)"強制類型轉換:
此處會發生「截斷」現象,即把一個佔字節數多的變量賦值給一個佔字節數少的變量,會把高位截斷。把一個佔字節少的變量賦值給一個佔字節數多的變量,高位會進行補位(補符號位)編譯器

* 關係操做符(> , >= ,< ,<= ,!= ,== )

在前面已經介紹了這些操做符,在此再也不贅述,注意 = 和 == 書寫時不要出錯便可。it

* 邏輯操做符(&& ,|| )

"&&":邏輯與
&&至關於and
" || ":邏輯或
|| 至關於 or
「短路求值」:
對於&&,若左側表達式值爲假,那麼右側再也不求值,整個表達式結果爲假
對於 || ,若左側表達式值爲真,那麼右側再也不求值,整個表達式結果爲真io

* 條件操做符(表達式1 ?表達式2 :表達式3)

若是表達式1結果爲真,則返回表達式2的值,不然返回表達式3的值
ps:優先級最低!!!編譯

* 逗號表達式(表達式1,表達式2,表達式3)

整個表達式的結果爲最後一個表達式的結果。

* 下標引用操做符( [ ] )

數組名+索引值,調用數組的值

* 隱式類型轉換

相似於char/short這樣的類型,參與算數運算的時候會觸發整型提高,即隱式轉換爲int 型再參與運算!

相關文章
相關標籤/搜索