C語言基礎
=====================
1. 學習方法
多看+多敲+多思考總結
2. C語言中變數型別及其使用
-1)、變數
----用來存放各種型別的資料
例子:
商品的價格---》小數表示 4.0 3.5
商品的數量---》整數
商品的名稱---》中文字串或者英文字串
-2)、變數型別
int(整型) long long int(長長整型)
?
• char(字符型別) float(單精度浮點型)
?
• double(雙精度浮點型) long(長整型)
?
• short(短整型) union(聯合體)
?
• bool(型別) struct(結構體)
?
• enum(列舉) unsigned(無符號數)
-3)、變數的使用
語法規則: 型別 變數名字;
如:
int ab123;
float price; //英文單詞,或者縮寫
float jiage; //最惡心的--即拒絕用拼音命名!!!
-4)、C語言命名規范
第一個:變數的名字中只能有字母,數字和下劃線組成,并且首字母不能是數字
如:ab Ab ab78 a79 _abc 7mn(非法) a#b(非法) h@c(非法)
第二個:命名的時候盡量通俗易懂,不要用漢語拼音,用英文單詞縮寫
(1)整型
大小: 4個位元組,32位二進制,知道大小是為了防止使用的時候資料溢位了(超出取值范圍了)
存盤:
原碼:一個整數原本的二進制編碼
比如: 8的二進制原碼 1000(短除法求)
反碼:把原碼依次取反
原碼:1101 --》反碼0010
補碼:反碼加1
例子:
原碼:1101 --》補碼0010+1 --》0011
正數在計算機中采用原碼存放,并且最高位是符號位,0表示正數,1表示負數
3、C語言程式的一些規范
最簡單的C語言程式
#include //頭檔案
?
• int main() //C語言程式的入口,main函式
?
• {
?
• printf("hello world!\n"); //幫助我們在螢屏上列印一句話
?
• return 0; //結束整個main函式
?
• }
(1)、C語言的格式控制符號以及輸入和輸出
-1)、格式控制符號
作用:C語言區分不同的資料型別,在輸入輸出資料的時候需要使用不同的格式控制符號來跟變數型別對應
常用進制數的標準寫法:
int a=10; //二進制10 --》2
?
• //八進制10 --》8
?
• //十六進制10 --》16
?
• int a=b10; //二進制
?
• int a=010; //八進制10
?
• int a=0x10; //十六進制10
?
• int a=10; //十進制的
-2)、格式對應關系
%d --> int
?
• %f -->float 默認保留6位有效數字
?
• %lf -->double
?
• %hu -->short
?
• %ld -->long
?
• %lld -->long long int
?
• %c -->char 輸出的是字符本身
?
• %d -->char 輸出是字符的ASCII碼值
?
• %x -->十六進制,字符小寫列印
?
• %X -->十六進制,字符大寫列印
?
• %#x -->標準形式列印十六進制,前面加上0x
?
• %o -->八進制
?
• %#o -->標準形式列印八進制,前面加上0
?
• %10.2f -->前面10表示位寬 后面的2表示保留2個小數位
?
• %-10.2f -->前面10表示位寬 后面的2表示保留2個小數位
?
• %.9f -->指定了保留9個小數位,位寬沒有指定,默認位寬
?
• %10d -->10是位寬,靠右對齊,左邊補空格
?
• %-10d --> 靠左對齊,右邊補空格
?
• %s -->字串
?
• %5s
?
• %p -->變數地址
(2)、C語言代碼撰寫規范
1.注意縮進---用tab鍵縮進對齊;
2.適當的空行;
3.注釋,簡明扼要:
C語言注釋只有兩種寫法
--單行注釋 //注釋文字
--塊注釋 /* 注釋的內容 */,塊注釋不能嵌套
尤其是重要的核心代碼必須寫注釋
4.命名,通俗易懂---英文,千萬不要用拼音
4、C語言中的運算子
算術運算子 + - * / % (取余)
?
• 關系運算子 > < == != >= <=
?
• 邏輯運算子 ||邏輯或 &&邏輯與 !邏輯非
?
• 指標運算 * &
?
• 三目運算子 ?:
?
• 求資料型別大小,變數大小 sizeof
?
• 位運算 & | ~ ^
?
• 組合運算 += -= *= \= &= |=
?
• 移位運算 >> <<
?
• 自增自減 ++ --
(1) 除法
情況一:
兩個整數相除,結果取整,而且不會四舍五入
情況二:
除法運算中有一個是小數
1/2 --》結果不是0.5 是0
16/3 --》5
2/3 --》
(2)取余,計算余數
只能用于整數運算 15%2 余數1
15.0%2 不對的,小數不能參與取余運算
實際作用
除法和取余配合實作獲取一個數的各個位
(3)邏輯運算,跟條件判斷配合在一起使用
if(a>b)
數學中: 10<x<100
C語言中: if(x>10 && x<100)
重點---區分==和=
“==”用來判斷變數是否相同 if(a==b)
“= ”賦值運算子號 a=233
C語言規定的真和假
非零就是真 1 18 -9
?
• 零就是假
&&、||、~:
運算式一 || 運算式二 || 運算式三
?
• //從左到右,有一個條件為真,后面的都不用運算了,整個運算式都為真
?
• 運算式一 && 運算式二 && 運算式三
?
• //從左到右,有一個條件為假,后面的都不用運算了,整個運算式都為假
?
• if(有房&&有車&&帥) ---都成立,你才是高富帥
?
• 邏輯非 真--》假
?
• 假--》真
(4) 三目運算子
運算式1?運算式2:運算式3
判斷運算式1是否為真
為真 --》執行運算式2
為假 --》執行運算式3
(5)位運算(重點)
對整數的二進制進行運算
按位與 & 只要有一個是0結果就是0,全部都是1,結果就是1
比如: 18&16結果是多少? int a=89; int b=96; a&=b; //等價于 a=a&b;
18 --》二進制 10010
16 --》二進制 10000
10000
特點: 任意一個整數要求把它的第三位二進制置0,其它位不允許改變
125--》二進制1111101 --》最終希望的結果1111001
1111101 --》125
1111011 &
1111001
規律: 任何二進制位跟1進行按位與運算結果保持不變
任何二進制位跟0進行按位與運算結果一定是0
按位或 | 只要有一個是1,結果就是1,全部都是0,結果就是0
比如: 18|16結果是多少?
18 --》二進制 10010
16 --》二進制 10000
10010
特點: 用位或運算去設定某一位二進制為1
規律: 任何二進制位跟0進行按位或運算結果保持不變
任何二進制位跟1進行按位或運算結果一定是1
按位異或 ^ 相同為0,相異為1
比如: 18^16結果是多少?
18 --》二進制 10010
16 --》二進制 10000
00010
特點: 將一個數的二進制數的某一位取反
比如: int a=785 第三位二進制取反
785
0000........100 異或
一個數跟自己異或,結果為0 a^a結果為0
異或滿足交換律 a^b^a等價于 a^a^b
一個數跟0異或,結果保持不變 a^0結果為a
按位取反 ~ 0變成1 1變成0
比如: ~18結果是多少?
18 --->二進制 10010
~18 ---> 01101
(6)組合運算(復合運算)
"+=" a+=10; //等價于 a=a+10;
其它的類比,如 -=、/=、*= 等
(7)移位
左移 << 把一個整數的二進制整體向左移動若干位,低位補0
18<<2; //18左移2位
0000000000.........10010<<2
特點: 一個數左移n位,相當于乘以2的n次方
右移 >> 把一個整數的二進制整體向右移動若干位,高位補什么??
算術右移: 高位補符號位
邏輯右移: 高位補0
特點: 一個數右移n位,相當于除以2的n次方
(8)自增和自減
a++ 后置++ 先使用a原本的值,然后再把a加1賦值給自己
++a 前置++ 先把a加1,然后再使用加一之后的a
a-- 后置-- 先使用a原本的值,然后再把a減1賦值給自己
--a 前置-- 先把a減1,然后再使用減一之后的a
例如:
++i + ++i = ? --->即(++i)+(++i)=3+3=6
筆記鏈接:https://kejizeichuan.lanzous.com/ifBFhf9dboh(建議用Typora打開)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/1852.html
標籤:C
上一篇:要點1:指標、陣列和復合字面量
下一篇:C++逆序演算法有感
