1、開啟終端(ctrl+alt+t),mkdir day01 建立目錄,cd 目錄名。
2、vim file.c,進入vim文字編輯器,輸入i,進入**編輯模式。
3、編寫**,ctrl+x執行**,ctrl+z儲存退出。
4、vimtutor
#include功能是把頭檔案匯入到當前** ( stdio startand in out head )
#include
main是c**的執行入口,有且只能有乙個。
int main()
對**進行劃分管理區域
編輯器:型別記事本一樣的用來編寫**的工具。
編譯器:負責把**檔案翻譯成可執行程式的軟體。
gcc 是gnu社群為編譯linux核心開發的一款編譯器。
gcc code.c -> a.out
編譯器是如何把c**翻譯成可執行程式的:
1、預處理
把**中以#開頭的指令翻譯成標準的c**,生成預處理檔案。
gcc -e code.c -o code.i
2、彙編
把預處理檔案翻譯成彙編檔案
gcc -s code.i -> code.s
3、編譯
把彙編檔案翻譯成目標檔案(二進位制)
gcc -c code.s -> code.o
4、鏈結
把若干個目標檔案合併成乙個可執行檔案
gcc a.o b.o c.o -> a.out
為什麼要把資料進行分類:
1、現實社會中的資料是自帶類別屬性。
2、對資料進行分型別可以節約儲存空間、提高執行效率。
c語言中資料分類兩人大類自建(程式自己設計的,如:結構、聯合、類)和內建(c語言自帶)。
整型:char、short、int、long、long long
有符號 signed : 它儲存資料的二進位制位中最高位用來表示正負。
無符號 unsigned :它的所有的二進位制位都用來儲存資料,只能表示正數。
浮點型:
float 單精度
double 雙精度
long double 高精度
浮點型資料採用的是科學計數,可以表示較大範圍的資料,但是精確度有限。
浮點型的資料由於格式特殊,所以運算的效率不高,程式設計時優先選擇整型。
布林型別:c語言中沒有真正的布林型別,若使用必須新增標頭檔案stdbool.h
bool true false
字元型:字元其實就是符號或圖案,在計算機中是以整數形式儲存的,當需要顯示時會根據ascii表中的對應關係,顯示相應的符號。
『\0』 = 0
『0』 = 48
『a』 = 65
『a』 = 97
儲存資料的容器,需要先定義後使用。
定義:型別 變數名;
注意:剛定義的變數預設值是不確定的,為了安全一定要初始化(養成良好的習慣)。
變數的取名規則(識別符號的取名規則):
1、只能由字母、數字、下劃線組成。
2、不能以數字開頭。
3、不能與關鍵字重名(32個關鍵字)。
4、盡量不要超過30個字元。
5、見名知義(功能+型別+作用域+…)。
c語言中通過使用佔位符的方式來告訴printf/scanf變數的型別。
變數的輸出:printf 型別 變數名
sizeof 計算變數的位元組數。
練習:定義各型別的變數,使用scanf接收,使用printf顯示,使用sizeof計算變數的位元組數。
字面值常量(**中能直接使用的數量:100,1000),不可被修改,儲存在一塊只有唯讀許可權的記憶體中(**段)。
設定字面值常量的型別:
預設是int(10)型別,或double(3.14)型別。
10u unsigned short
10u unsigned int
10u8 unsigned char
3.14f float
3.14l long double
/ % 除數不能為零,如果除數為零程式會提前死亡。
關係運算子:> < >= <= == !=
運算的結果是邏輯:true=1 false=0
==使用時常量放在左邊,變數放右邊。
num == 10;
10 == num; 防止出錯
10 < num < 100; 數學中[11,99],c語言中永遠為真。
在運算之前會把運算物件轉換成邏輯值:零值轉換成假,非零值轉換成真,然後再對邏輯值進行運算,得到的結果也是邏輯值。
a && b 一假即假
a || b 一真即真
!a 對a的值求反
!比&&、||運算級別要高(單目運算子的級別都比較高)。先後順序 (not and or)
&&、|| 具有短路特性,當左邊的值已經能確定表示式的結果,右邊的值則不再計算(注意思維誤區,還可以藉此形成精簡的分支結構)。
int num = 0;
num>0 && num–;
num += 10 <=> num = num + 10;
當1的值為真時執行2,否則執行3,類似if語句。
不能使用流程控制語句,因為畢竟是運算子,必須要有運算結果。
1、sizeof不是函式而是運算子,而且是32個關鍵字之一。
2、只是推算表達的結果是什麼型別、佔多少個位元組(取最大的),而不計算表示式。
C語言基礎知識
1 的問題。int i 1 int j 2 int k i j printf d k 輸出k為3。編譯原理有關編譯器在詞法解析的時候,對於運算子,總是查詢最大的匹配也就是說,i j,編譯器在找到 的時候,它不立即理解為 而是繼續下乙個字元,下乙個字元仍然是 可以組成 再往下的話便是 不成立了。所以i...
C語言基礎知識
一 位元組對齊 位元組對齊的原因,是機器在訪問記憶體中儲存的資料的高效性。通常機器是機器位數為自然邊界來訪問記憶體的,如果乙個4位元組整形數,所在的記憶體不在虛擬記憶體的自然邊界。則cpu需要讀多於一次的資料,這樣就降低了效率。所以,簡單地說,就是保證cpu指令在訪問資料的時候,能一次讀取,而不需要...
C語言基礎知識
1.進製 1 基數 基數為n,代表n進製 2 位權 從個位開始,向左依次編號為0,1.x 分別代表n進 制的x次 3 八進位制以0開頭,十六進製制以0x開頭 4 x 進製轉 進製 按權求和 十進位制轉 x進製 連除倒取餘 2.基本資料型別 3.常量 程式執行期間值不能被改變的量 分為 整型常量,浮點...