C語言 操作符和表示式總結

2021-09-29 08:10:43 字數 4004 閱讀 1326

操作符的分類:

算術操作符

移位操作符

位操作符

賦值操作符

單目操作符

關係操作符

邏輯操作符

條件操作符

逗號表示式

下標引用、函式呼叫和結構成員

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

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

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

#include

#include

#pragma warning(disable:4996)

intmain()

此時的結果並不是我們想要的3.333333

將/後的3變為3.0即可得到3.333333(/任意一邊有浮點數,就執行浮點數的操作)

移位操作符

右移操作符》

左移操作符<<

左移操作符移位規則:

左邊拋棄,右邊補0

右移操作符 移位規則:

首先右移運算分兩種:

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

2.算術移位 左邊用0填充,右邊丟棄

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

int num =10;

num =-1

;//error

位操作符

& //按位與

| //按位或

^ //按位異或

& (按位與):兩個位元位上的數都為1時,結果為1;

| (按位或):兩個位元位上的數都為0時,結果為0;

^ (按位異或):兩個位元位上的數不相同,結果為1;

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

拓展:異或運算子的乙個常見應用------用於不建立臨時變數時交換兩個數的值

賦值操作符

賦值操作符在程式設計中如果遇到乙個不滿意的值,可以重新進行賦值

且賦值操作符可進行連續使用

int a =10;

int x =20;

int y =19;

a = x = y+3;

//連續賦值

復合賦值符

+=

-=*=

/=%=

<<=

>>=

&=|=

^=

! 邏輯反操作

-負值+正值

& 取位址

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

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

– 前置、後置–

++ 前置、後置++

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

(型別) 強制型別轉換

注:++i 為先遞增 後使用

i++為先使用 後遞增

關係操作符

><

>=

<=

!= 用於測試不相等

== 用於測試相等

這些關係運算子比較簡單,但在使用時會有一些陷阱

如:在程式設計的過程中==和=混淆

&& 邏輯與

|| 邏輯或

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

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

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

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

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

&&(邏輯與):兩個都為真時為真1

|| (邏輯或):兩個都為假時為假0

前面語句成立,則後面語句不再執行

exp1?exp2:exp3

兩個數比較大小的**實現:

#include

intmain()

exp1,exp2,exp3,…expn

逗號表示式,都是用逗號隔開的多個表示式。逗號表示式,從左至右依次執行。整個表示式的結果是最後乙個表示式的結果

1.[ ]下標引用操作符

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

int a[10]

;//建立陣列運算元是aa[9

]=10;

//使用下標引用操作符運算元是9

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

3.訪問乙個結構的成員

.結構體.成員

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

#include

struct stu

;void

set_age1

(struct stu stu)

void

set_age2

(struct stu* pstu)

intmain()

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

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

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

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

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

long double

double

float

unsigned long int

long int

unsigned int

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

注:在算術轉化過程中,要注意合理性問題,不然就會出現潛在的問題

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

1.操作符的優先順序

2.操作符的結合性

3.是否控制求值順序

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

C語言操作符和表示式

5 2 2 5 2 1注 1.除 操作符之外,其他的幾個操作符均可作用與整數和浮點數,但需要注意結果列印的格式和精度缺失。2.對於 操作符,如果兩個數都為整數,執行整數除法,而只要有浮點數執行的就是浮點數除法。3.操作符的兩個運算元必須為整數。返回的是整除之後的餘數。左移操作符 移位規則 左邊拋棄 ...

C語言 操作符和表示式

算術操作符 c提供了所有常用的算術操作符 除了 操作符,其餘的操作符是既適用於浮點型別又適用於整數型別 為取模操作符,接受兩個整型運算元,把左運算元除以右運算元,但其返回的值是餘數而不是商。移位操作符 二進位制 0和1 移位操作只是簡單地把乙個值的位向左或向右移動。左移位中,值最左邊的幾位被丟棄,右...

C語言 操作符和表示式

加法操作符 減法操作符 乘法操作符 除法操作符 取餘操作符 注意 右移操作符 左移操作符 注意 原值 0000 1011 11 1 0000 0101 5 11 2 1 2 0000 0010 2 11 2 2原值 0000 1011 11 1 0001 0110 22 11 2 1 2 0010 ...