對於操作符的總結歸納 C

2021-08-29 22:52:24 字數 3441 閱讀 4500

算數操作符 (+ - * / %)

移位操作符(>>和<<)

位操作符 (& | ^)

賦值操作符(=)(復合賦值符:+= -= *= != <<= >>= &= ^= |=)

單目操作符(! ~ + - ++ – & * (型別) sizeof)

關係操作符(> >= < <= != == )

邏輯操作符(&& ||)

條件操作符(expression1?expression2:expression3)

逗號操作符(,)

下標引用、函式呼叫和結構成員( array[下標] *(array)+下標)

算數表示式(+ - * / %)

(1) 除了%的用於取模運算(取餘),其兩個運算元必須為整數外,其餘四個操作符既適用於整數也適用於浮點數

(2) 對於/的兩個運算元如果都為整數的話,運算結果也為整數(小數部分會自動截斷)。所以在使用/時要注意,如果要得到浮點型的資料的話/兩端的運算元至少有乙個是浮點數

int main()

很顯然 b是浮點數 ,我們希望 b=3.333333 但是事實上 b=3

移位操作符(>>和<<)

>>和<<的運算元必須為整形,他們是對乙個整數的二進位制序列進行操作的

在**<<** 操作中,把乙個值向左移動,最左邊的幾位被丟棄,右邊用0,來補齊。

在**>>操作中,把乙個值向右移動。但在左邊移入新位的時候出現了問題:

1.左邊移入位用0填充,這種方式是邏輯移位**

2.左邊移入用原先該值的符號位決定(符號位位1,則移入的位均為1;符號位為0,則移入的均為0),這種方式是算數移位,這種方式可以保證正負形式不變。

左移

int num=13;

num<<1 ;

00000000000000000000000000000000001101

000000000000000000000000000000000011010

在左移時由於向左移動一位,就等價於每一位2,所以左移一位,相當於給num2,結果為26

右移

int num=-1

num>>1;

10000000000000000000000000000000000001//原碼

11111111111111111111111111111111111110//反碼

11111111111111111111111111111111111111//補碼

111111111111111111111111111111111111111 //右移一位

11111111111111111111111111111111111110///減1

10000000000000000000000000000000000001//取反

在記憶體中正數的補碼和他的原碼相同,負數不同,結果為-1

位操作符 (& | ^)

同樣是對二進位制位的操作,

&按位與,如果兩個位都是1,結果為1;否則,結果為0;

|按位或,兩個位只要有乙個為1,結果為1,;兩個位都為0,結果為0;

**^**按位異或,兩個位相同結果為0;不同結果為1;

*賦值操作符(=)(復合賦值符:+= -= = != <<= >>= &= ^= |=)

a=x=y+3; <===> a=(x=y+3);

a+=1 <=> a=a+1

單目操作符(! ~ + - ++ – & * (型別) sizeof)

!邏輯反操作; 如果運算元為真,其結果為假,如果運算元為假,其結果為真;

~將運算元所有位為1 的數變為0,所有位為0的數變為1;

+ 和 -分別作用是產生運算元 和產生運算元的負數;

**++ 和 – **自增自減操作符 ,風為前置和後置;

int num=0,n=0,m=0;

n=num++;//n的值為0,num值變為1 先使用再自增

m=++num;//m的值為2,num值為2 先自增再使用

** & * **

&為取位址操作符

*為間接訪問操作符,與指標一起使用

int a=0,*b;

b=&a; //將a的位址賦給指標b;

*b=3;//將a的值改為3

**(型別) **強制型別轉換,它用於顯示地把表示式轉換為另外的型別

sizeof判斷運算元的型別長度:

sizeof(int)//不可寫為sizeof int

sizeof x <=>sizeof(x)

關係操作符(> >= < <= != == )通常用於條件判讀

if()

邏輯操作符(&& ||)

expression1&& expression2

如果表示式 expression1和 expression2結果都為真那麼整個表示式結果為真。如果有乙個為假,則整個表示式結果為假。

如果 expression1結果為假 則不進行 expression2,整個表示式結果直接為假

expression1|| expression2

如果表示式 expression1和 expression2結果有乙個為真那麼整個表示式結果為真。如果都為假,則整個表示式結果為假。

*如果 expression1結果為真 則不進行 expression2,整個表示式結果直接為真

條件操作符(expression1?expression2:expression3)

表示式expression1為真,則整個表示式的值為expression2,expression3不進行運算;否則,整個表示式的值為expression3,expression2不進行運算

比如以下**

if(a>3)

else

等價於b=a>3?1:2;

逗號操作符(,)

表示式從左向右依次求值,但最後表示式的值為最右面表示式的值

*下標引用、函式呼叫和結構成員( array[下標] (array)+下標)

c語言中的操作符歸納

操作符 1.操作符的分類 算數操作符 對於 來說,如果兩個操作符都為整數,執行整數除法,只要有浮點型別的執行就進行浮點數的除法。的兩個運算元,必須為整數。對負數進行取模相當於對其加模數。2.移位操作符 左移的補零,右移則補符號位。3.位操作符 按位與 按位或 按位異或0 0 0 0 0 0 0 0 ...

C 操作符總結

c 操作符總結 1算術操作符 操作符只能用整數,其他的操作符都可以作 於整數和浮點數。2移位操作符 左移和右移 左移 左邊拋棄 右邊補零 右移有兩種 邏輯移位 右邊丟棄,左邊補零 算術移位 右邊丟棄,左邊補原符號位 不移動負數字,3位操作符 按位與 按位或 按位異或 他們的運算元必須是整數 4賦值操...

C語言操作符總結

c語言操作符總結 1.算數操作符 有浮點數則為浮點除法 全為整形 2.移位操作符 所有的移位操作符都是二進位制移位 左移 效果 左邊拋棄右邊補0.右移 效果 1 符號位 算術移位 原該值的符號位 2 0 邏輯移位 警告 不要移動負數字 3.位操作符 按位與 按位或 按位異或 注意 全都為二進位制位操...