根據需要的數字不同可以把操作符分為
三種:單目操作符,雙目操作符和
三目操作符
加減乘除用+,-,*,/四個操作符表示
如果參與除法計算的兩個數字都是整數
則計算結果只保留整數部分
%用來表示取餘操作
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...