C語言操作符

2021-07-29 13:32:26 字數 2297 閱讀 9273

操作符的分類:

1    算術操作符

2    移位操作符

3    位操作符

4    賦值操作符

5    單目操作符

6    關係操作符

7    邏輯操作符

8    條件操作符

9    

逗號表示式

1 算術操作符:

+ - * / %

1) 除了%操作符之外,不能用於浮點數。

2)對於/操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。

3) %操作符的兩個運算元必須為整數。返回的是整除之後的餘數。

2   移位操作符

<< 左移操作符:左邊拋棄、右邊補0

>> 右移操作符:

首先右移運算分兩種:

1)算術移位

左邊用符號位填充,右邊丟棄

2) 邏輯移位

左邊補0,右邊丟棄

3  位操作符:&  |    ^ 

注:他們的運算元必須是整數。

4   賦值操作符

該操作符 可以修改之前不

滿意的值,就是你可

以給自己重新賦值。

賦值操作符可以連續使用

+=  -=  *=  /=  %=  >>=  <<=  &=   |=   ^=

這些運算子都可以寫成復合的效果,這樣寫更加簡潔。

5   單目運算子

! 邏輯反操作

- 負值

+ 正值

& 取位址

sizeof 運算元的型別長度(以位元組為單位)

~ 對乙個數的二進位制按位取反

-- 前置、後置--

++ 前置、後置++

* 間接訪問操作符(解引用操作符)

(型別) 強制型別轉換

前置++和--:先自增(自減),再使用

後置++和--:先使用,再自增(自減)

6   關係操作符:>  >=  <  <=   != 用於測試「不相等」   == 用於測試「相等」

警告:在程式設計的過程中== 和=不小心寫錯,導致的錯誤

7   邏輯操作符

&& 邏輯與   :左邊表示式為假,不再執

行後邊的表示式

|| 邏輯或       :左邊表示式為真,不再執行後邊的表示式

區分邏輯與&&

和按位與&

區分邏輯或||和按

位或|

1&2----->0

1&&2---->1

1|2----->3

1&&2---->1

8  條件操作符

exp1 ? exp2 : exp3

可以使用條件表示式實現找兩個數中較大值,比if else語句簡潔明瞭

9  逗號表示式

exp1, exp2, exp3, …expn

逗號表示式,就是用逗號隔開的多個表示式。

逗號表示式,從左向右依次執行。整個表示式的結果是最後乙個表示式的結果。

算術轉換

如果某個操作符的各個運算元屬於不同的型別,那麼除非其中乙個運算元的轉換為另乙個運算元的型別,否則操作就無法進行。下面的層次體系稱為尋常算術轉換。

long double

double

float

unsigned long int

long int

unsigned int

int如果某個運算元的型別在上面這個列表中排名較低,那麼首先要轉換為另外乙個運算元的型別後執行運算。

警告:但是算術轉換要合理,要不然會有一些潛在的問題。

操作符的屬性

複雜表示式的求值有三個影響的因素。

1. 操作符的優先順序

2. 操作符的結合性

3. 是否控制求值順序。

兩個相鄰的操作符先執行哪個?取決於他們的優先順序。如果兩者的優先順序相同,取決於他們的結合性。

表示式的求值部分由操作符的優先順序決定。

eg1:  

a*b + c*d + e*f

注釋:**1在計算的時候,由於比+的優先順序高,只能保證,的計算是比+早,但是優先順序並不能決定第三個*比第乙個+早執行。

所以表示式的計算機順序就可能是:a*b  c*d  a*b + c*d   e*f   a*b + c*d + e*f

或者:a*b    c*d     e*f    a*b + c*d   a*b + c*d + e*f

eg2:   c + --c;

注釋:同上,操作符的優先順序只能決定自減–的運算在+的運算的前面,但是我們並沒有辦法得知,+操作符的左運算元的獲取在右運算元之前還是之後求值,所以結果是不可**的,是有歧義的。

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語言 操作符

c語言的操作符有很多種,也很重要,可分為以下幾類 1.算術操作符 除法中 倆個整形相除結果也等於整形 含有浮點型的除法中結果也為浮點型。模運算只能用於整數,因為有小數點時,為浮點數運算,浮點數除法中不存在小數。int main 2.移位操作符 左移 左邊直接拋棄,右邊補0 001 2 100 右移 ...