0基礎學程式設計之操作符的認識

2021-08-17 23:37:39 字數 3113 閱讀 5968

操作符

分類:算術操作符

移位操作符

位操作符

賦值操作符

單目操作符

關係操作符

邏輯操作符

條件操作符

逗號表示式

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

算術操作符

1. 除了%操作符之外,其他的幾個操作符可以作用於整數和浮點數。

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

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

移位操作符

<< 左移操作符

>> 右移操作符

左移操作符

移位規則:

左邊拋棄、右邊補0

右移操作符

移位規則:

首先右移運算分兩種:

1. 邏輯移位

左邊用0填充,右邊丟棄

2.算術移位

左邊用原該值的符號位填充,右邊丟棄

位操作符

&     //按位與

|     //按位或

^     //按位異或

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

賦值操作符

賦值操作符是⼀個很棒的操作符,他可以讓你得到⼀個你之前不滿意的值。也就是你可以給自己重新賦值。

復合賦值符

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

比如:int x = 10;

x = x+10;

x+=10;//復合賦值

//其他運算子⼀樣的道理。這樣寫更加簡潔。

目操作符

!          邏輯反操作

-          負值

+          正值

&          取位址

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

~          對⼀個數的⼆進製按位取反

前置、後置--

前置、後置++

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

(型別)      強制型別轉換

關係操作符

這些關係運算子比較簡單,沒什麼可講的,但是我們要注意⼀些運算子使⽤時候的陷阱。

比如:x = get_value();

if(x = 5)

//處理事務

這裡看似x如果等於5就執⾏事務處理,實際上**是不是這個意思呢?

我們將判斷的 == 搞成了賦值的 = ,這樣這個事務⽆論x是多少都會被執⾏,所以切記不要 寫錯了。

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

邏輯操作符

&&  邏輯與

||  邏輯或

區分邏輯與和按位與

區分邏輯或和按位或

1&2----->0

1&&2---->1

1|2----->3

1||2---->1

條件操作符

exp1 ? exp2 : exp3

逗號表示式

exp1, exp2, exp3, …expn

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

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

下標引

用、函式調

用和結構成員

1.[ ]

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

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

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

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

2.( )

函式呼叫操作符

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

3.訪問⼀個結構的成員

. 結構體.成員名

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

表示式求值

表示式求值的順序⼀部分是由操作符的優先順序和結合性決定。同樣,有些表示式的運算元在求值的過程中可能需要轉換為其他型別。

隱式型別轉換

c的整型算術運算總是⾄少以預設整型型別的精度來進行的。為了獲得這個精度,表示式中的字元和短整型運算元在使⽤之前被轉換為普通整型,這種轉換稱為『整型提公升』。

//例項1

char a,b,c;

a = b + c;

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

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

//例項2

a = (~a ^ b << 1)>> 1;

對於例項1的結果和使⽤8位算術運算的結果是⼀樣的,但是例項2就不⼀樣了。

由於存在求補和左移操作,所以8位的精度是不夠的。標準要求進⾏完整的整型求值,所以對於

這類表示式的結果,不會存在歧義。

算術轉換

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

long double

double

float

unsigned long int

long int

unsigned int

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

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

float f = 3.14;

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

操作符的屬性

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

1. 操作符的優先順序

2. 操作符的結合性

3. 是否控制求值順序。

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

函式式程式設計 基礎操作符

終端操作符 foreach slf4j public class basicoperatortests private listuserlist beforeeach void setup test public void foreachstream findfirst 第乙個物件 test pub...

0基礎學程式設計之列印100 200之間的素數(質數)

題目 列印100 200的素數,並輸出素數個數。判斷素數的方法 方法順序對應 順序 1.正常思路 首先建立100 200的數,用2到這個數減1分別整除這個數,如果能整除,則表示此數不是素數,反之是素數。2.更優思路 乙個數m能夠寫出m a b的形式,如果a不等於b,那麼其中乙個數一定小於根號下的m。...

對C語言操作符的認識

操作符可以分為以下幾類 1 除了 d操作符之外,其他幾個操作符可以用於整數和浮點數。2 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。3 操作符的兩個運算元必須為整數。返回的是整出之後的餘數。左移操作符 移位規則 左邊拋棄,右邊補0 int num 10 00...