標準C學習day04 運算子 分支語句

2021-09-22 08:07:05 字數 3652 閱讀 9499

根據需要的數字不同可以把操作符分為

三種:單目操作符,雙目操作符和

三目操作符

加減乘除用+,-,*,/四個操作符表示

如果參與除法計算的兩個數字都是整數

則計算結果只保留整數部分

%用來表示取餘操作

15 % 6結果是3(15可以分解成12 +3,12是

6的整數倍,3是乙個比6小的數字)

賦值操作符用=表示

賦值語句本身也可以作為數字使用,這個數字

就是賦值以後儲存區里的數字

可以在乙個表示式裡多次使用賦值操作符,

這個時候優先計算右邊的賦值操作符

絕大多數雙目操作符可以和賦值操作符合併

成為復合賦值操作符(例如+=,/=等)

這種操作符會把雙目操作符的計算結果

記錄到儲存區里

這種操作符通常在表示式裡最後計算

自增操作符(++)和自減操作符(–)都是

單目操作符

它們只能和儲存區一起使用

自增操作符可以把儲存區的內容加一

自減操作符可以把儲存區的內容減一

它們各有兩種使用方法:

前操作(操作符寫在儲存區的前面)

後操作(操作符寫在儲存區的後面)

前操作表示式作為數字使用的時候是修改

後的數字

後操作表示式作為數字使用的時候是修改

前的數字

邏輯表示式的結果必須是布林值

邏輯操作符用來編寫邏輯表示式

!是乙個單目邏輯操作符

它可以根據乙個布林值計算出另外乙個

布林值這兩個布林值一定不同

這個操作叫做求反操作

雙目邏輯操作符包括==(等於),!=(不等於),

>(大於),<(小於),>=(大於等於)和

<=(小於等於)

乙個邏輯表示式裡最多包含乙個雙目

邏輯操作符

與(&&)和或(||)可以用來連線兩個邏輯

表示式只要兩個表示式裡有乙個的結果是真

用或(||)合併以後結果就是真

只要兩個表示式裡有乙個的結果是假

用與(&&)合併以後結果就是假

與(&&)和或(||)都具有短路特徵

如果前面表示式的結果可以決定合併後

表示式的結果就忽略後面的表示式

位操作符用來操作二進位制數字的內容

~是乙個單目位操作符

這個操作符可以根據乙個數字計算出另外

乙個數字,這兩個數字所有二進位制

數字的內容都不一樣

這個操作叫按位求反

char 0x93 1001 0011

char ~0x93(0x6c) 0110 1100

雙目位操作符包括按位與(&),按位或(|)

和按位異或(^)

它們都是把兩個數字對應二進位制數字的

內容互相進行計算

按位與(&)可以把對應數字的內容做與

計算只要乙個數字內容是0則與計算以後

結果就是0

3      0000 0011
& 5 0000 0101

0000 0001

任何數字內容和0做按位與結果一定是0

任何數字內容和1做按位與結果保持不變

可以利用按位與從乙個數字裡單獨獲得

某些數字的內容

0010 1011 & 0000 0001 結果是1

(利用按位與用來判斷乙個數字是否是奇數)

可以利用按位與把乙個數字的某些數字

內容設定成0

0110 1011 & 1101 1111 結果是0100 1011

按位或(|)可以把對應數字的內容做或計算

只要乙個數字的內容是1則或計算以後

結果就是1

3     0000 0011
| 5 0000 0101

0000 0111

任何數字內容和0做按位或保持不變

任何數字內容和1做按位或結果是1

可以利用按位或把某些數字內容設定成1

0110 1011 | 0000 0100 結果是0110 1111

按位異或(^)可以把對應數字的內容做

異或計算

如果兩個數字內容一樣則異或以後結果是0,

否則結果是1

3 0000 0011

^ 5 0000 0101

0000 0110

任何數字內容和0做按位異或結果保持不變

任何數字內容和1做按位異或結果變成相反數

可以利用按位異或把某些數字內容變成

相反數0110 1001 ^ 0000 1111 結果是 0110 0110

移位操作可以把乙個數字的所有二進位制

數字內容統一向左或向右移動n個位置

********

00000011

00000011 向左移動2步

00001100 多餘的數字內容被丟掉

空的數字裡填上新數字

《表示向左移位

表示向右移位

它們都是雙目位操作符

左邊的數字將要進行移位操作

右邊的數字是移動的位數

3 << 2 對3進行向左移動2位的操作

向左移位後右邊空出來的數字裡固定填充0

無符號型別數字右移時左邊空出來的數字

裡填充0

(無符號型別)

1000 0101 >> 2 0010 0001

有符號型別數字右移時左邊空出來的數字

裡填充符號位的內容

(有符號型別)

1000 0101 >> 2 1110 0001

向左移動n位通常相當於乘以2的n次方

向右移動n位通常相當於除以2的n次方

位操作符不會修改儲存區內容

&也可以作為單目操作符使用

它可以用來計算乙個儲存區

的位址(類似從**號碼本裡查詢某個人

的**號碼)

可以用%p做佔位符顯示位址資料

我們的計算機裡所有位址資料都是由

32個二進位制數字構成的

*也可以做單目操作符使用

它可以根據位址找到乙個儲存區

(類似根據**號碼撥打**)

三目操作符可以從兩種計算規則裡選擇

乙個(類似於工具箱,可以從多個工具裡選擇)

三目操作符格式如下

布林值 ? 表示式一 : 表示式二

布林值為真就用表示式一進行計算

布林值為假就用表示式二進行計算

計算絕對值的**

如果表示式裡不同數字的型別不同

就必須首先轉換成同乙個型別

然後再進行計算

這個轉換過程叫隱式型別轉換

隱式型別轉換過程中必須把占地小的型別

轉換成占地大的型別

如果既有整數型別數字也有單精度浮點

型別數字,隱式型別轉換時就把整數

型別轉換成單精度浮點型別

如果既有無符號型別數字也有有符號型別

數字,隱式型別轉換的時候就把有

符號型別轉換成無符號型別

可以在程式裡臨時給數字指定乙個型別

這叫做強制型別轉換

強制型別轉換格式如下

(char)300 把300當做字元型別數字使用

強制型別轉換有可能導致資料內容丟失

型別轉換不會修改儲存區內容

標準C語言day04

陣列 什麼是陣列 變數的組合,是一種批量定義變數的方式。定義 型別 陣列名 數量 int arr 5 使用 陣列名 下標 下標 從零開始,範圍 0 數量 1。遍歷 與for迴圈配合,使用迴圈變數i當作陣列的下標。初始化 型別 陣列名 數量 1 陣列與普通變數一樣預設值是隨機的,為了安全要對進行初始化...

day04 資料型別與運算子

c語言32個關鍵字 duto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static...

C 運算子,分支

1.定義變數儲存使用者輸入的整數 inttime 2.接收使用者輸入的整數 scanf d time 3.拿到秒數換算成多少分多少秒 intminu time 60 分鐘數 intsec time 60 秒數 4.輸出到螢幕上 printf d分 d 秒 n minu,sec intresult 1...