C語言 操作符總結

2021-09-14 05:36:29 字數 3343 閱讀 9322

算術操作符:+ - * / %

移位操作符:<< >>

位操作符:& | ^

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

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

關係操作符:> >= < <= != ==

邏輯操作符:&& ||

條件操作符:exp1 ? exp2 : exp3

逗號表示式:esp1, exp2, exp3, … expn

下標引用、函式呼叫和結構成員:[ ] ( ) . ->

以下是詳細介紹及其應用:

+    -    *    /    &
除了 % 操作符之外,其他的幾個操作符都可以作用於整數和浮點數;

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

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

<<  //左移操作符

>> //右移操作符

左移操作符移位規則:

左邊拋棄、右邊補0

右移操作符移位規則:

首先右移運算分為兩種:

1.邏輯移位左邊用0填充,右邊丟棄;

2.算術移位左邊用原該值的符號位填充,右邊丟棄。

警告:對於移位運算子,不要移動負數字,這個是標準未定義的。

&  //按位與

| //按位或

^ //按位異或

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

例如:不能建立臨時變數(第三個變數),實現兩個數的交換。

#include int main()
=

int a = 10; //把10賦給整形變數 a

int x = 0;

int y = 0;

a = x = y + 1; //連續賦值

+=  //等價於 a = a + 10

-= //等價於 a = a - 10

*= //等價於 a = a * 10

/= //等價於 a = a / 10

%= //等價於 a = a % 10

>>= //等價於 a = a >> 10

<<= //等價於 a = a << 10

&= //等價於 a = a & 10

|= //等價於 a = a | 10

^= //等價於 a = a ^ 10

!    //邏輯反操作

- //負值

+ //正值

& //取位址

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

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

-- //前置、後置--

++ //前置、後置++

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

(型別) //強制型別轉換

注:

前置++類似於以下**:

num += 1;

return num;

2.後置++類似於以下**:

int temp = num;

num += 1;

return temp;

>

>=

<

<=

!= //用於測試「不相等」

== //用於測試「相等」

特別注意:在一些 if() / while() 語句中,極其容易將 == 寫為 =,導致錯誤。

&&    //邏輯或

|| //邏輯與

區分邏輯與按位與區分邏輯或按位或

1 & 2 ----> 0;

1 && 2 ----> 1;

1 | 2 ----> 3;

1 || 2 ----> 1;

exp1 ? exp2 : exp3
例:找兩個數中的較大值。

if(a > b)else
等價於:

int max = (a > b ? a : b);
exp1, exp2, exp3, ... expn
逗號表示式,就是用逗號隔開的多個表示式。逗號表示式,從左到右依次執行。整個表示式的結果是最後乙個表示式的結果。

下標引用操作符

運算元:乙個陣列名 + 乙個索引值

() 函式呼叫操作符

接受乙個或者多個運算元:第乙個運算元是函式名,剩餘的運算元就是傳遞給函式的引數。

訪問乙個結構成員

. 結構體.成員名

-> 結構體指標 -> 成員名

表示式求值的順序一部分是由操作符的優先順序和結合性決定。

同樣,有些表示式的運算元在求值的過程中可能需要轉換為其他型別。

c的整形算術運算總是至少以預設整形型別的精度來進行的。

為了獲得這個精度,表示式中的字元和短整形運算元在使用之前被轉換為普通整形,這種轉換稱為「整形提公升」。

整形提公升的意義:

表示式的整形運算要在cpu的相應運算器件內執行,cpu內整形運算器(alu)的運算元的位元組長度一般就是int的位元組長度,同時也是cpu的通用暫存器的長度。因此,即使兩個char型別的相加,在cpu執行時實際上也要先轉換為cpu內整形運算元的標準長度。

通用cpu(general-purpose cpu)是難以實現兩個8位元位元組直接相加運算(雖然機器指令中可能有這種位元組相加指令)。所以,表示式中各種長度可能小於int長度的整形值,都必須先轉換為int或unsigned int,然後才能送入cpu去運算。

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

操作符的優先順序;

操作符的結合性;

是否控制求值順序。

兩個相鄰的操作符先執行哪個,取決於他們的優先順序。如果兩者的優先順序相同,取決於他們的結合性。操作符的優先順序大家可以上網搜尋查詢,此處不再贅述。

C語言操作符總結

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

C語言 操作符總結

1.運算操作符 加 可作為正號 例 a b 4 減 可作為正號 例 a b 5 乘 例 a b 除 例 a b 注意 分母不能為零 取餘 運算操作符的使用方法,基本與數學上的使用一致 2.賦值操作符 例 a 2 可讀為將2賦給a 注意 從右向左進行運算 3.其他符賦值操作符 例 a 1 相當於 a ...

C語言操作符總結

1.操作符的兩個運算元必須為整數,返回的是整除後的餘數。2.對於 操作符,如果兩個運算元都是整數則執行整數除法,只要有浮點數就執行浮點數除法。左移操作符 右移操作符 左邊拋棄,右邊補0 右移分為兩種 1.邏輯移位 左邊用0補,右邊丟棄 2.算術移位 左邊用原來的符號位填充,右邊丟棄 符號位中0表示正...