C語言操作符總結

2021-09-17 01:37:09 字數 3529 閱讀 8375

+    -    *     /     %
1.除了%操作符以外,其他操作符可以作用於整數和浮點數。

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

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

<<    左移操作符

>> 右移操作符

左移操作符移位規則

左邊拋棄,右邊補0

num<<1                  實際上num在沒被賦值的情況下,自身的值不會變化。
右移操作符移位規則

首先右移運算分為兩種:

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

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

3.對於移位操作符,不要移動負數字,這個是未定義的。

例如:

int num=10;

num>>-1;//error

位操作符有:

&     //按位與

| //按位或

^ //按位異或

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

int a=10;

int x=0;

int y=20;

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

+= 

-=*=

/=%=

>>=

<<=

&=|=

^=

這些運算子都可以寫成復合的效果。

比如:

int x=10;

x=x+10;

x+=10;//復合賦值

//這樣寫更加簡潔

!          邏輯反操作

- 負值

+ 正值

& 取位址

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

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

-- 前置,後置--

++ 前置,後置++

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

(型別) 強制型別轉換

>

>=

<

<=

!= 用於測試「不相等」

== 用於測試「相等」

我們要注意一些運算子使用時候的陷阱。

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

&&         邏輯與

|| 邏輯或

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

1&2------>0

1&&2------>1

1|2------>3

1||2------>1

exp1?exp2:exp3

例如:if(a1.[ ] 下標引用操作符

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

int arr[10];//建立陣列

arr[9]=10;//實用下標引用操作符。

[ ]的兩個運算元是arr和9。

2.()函式呼叫操作符 接受乙個或者多個運算元:第乙個運算元是函式名,剩餘的運算元就是傳遞給函式的引數。

#include void test1()

void test2()

int main()

3.訪問乙個結構的成員

.結構體.成員名           //成員變數使用

->結構體指標->成員名 //指標變數使用

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

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

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

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

整型提公升的意義:

b和c的值被提公升為普通整型,然後再執行加法運算。

加法運算完成之後,結果將被截斷,然後再儲存於a中。

如何進行整體提公升呢?

整形提公升是 按照變數的資料型別的符號位來提公升的

//負數的整形提公升

char c1 = -1;

變數c1的二進位制位(補碼)中只有8個位元位:

111111

因為char 為有符號的char

所以整形提公升的時候,高位補充符號位,即為1提公升之後的結果是:

1111111111111111111111

//正數的整形提公升

char c2 = 1;

變數c2的二進位制位(補碼)中只有8個位元位:

00000001

因為char 為有符號的char

所以整形提公升的時候,高位補充符號位,即為0提公升之後的結果是:

0000000000000000000000001

//無符號整形提公升,高位補0

整形提公升的例子:

//例項1  

int main()

突例1中的a,b要進行整形提公升,但是c不需要整形提公升a,b整形提公升之後,変成了負數,所以表示式a== 0xb6 , b0xb600的結果是假,但是c不發生整形提公升,則表示式c0xb600000的結果是真.

所以程式輸出的結果是: c

//例項2

int main()

突例2中的,c只要參與表示式運算,就會發生整形提公升,表示式+c ,就會發生提公升,所以sizeof(+c)是4個位元組.

表示式-c也會友生整形提公升,所以sizeof(-c)是4個位元組,但是sizeof( c ) ,就是1個位元組.

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

long double

double

float

unsigned long int

long int

unsigned int

int

如果某個運算元的型別在上面這個列表中排名較低,那麼首先要轉換為另外-乙個運算元的型別後執行運算。但是算術轉換要合理,要不然會有一些潛在的問題。

float f = 3.14;

int num = f;//隱式轉換,會有精度丟失

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表示正...