今天剛剛翻看了本身當初學習C語言時候的筆記,發現感觸挺深的,正好這個時候正是本身的複習階段,就拿過來複習一下吧
程序:爲解決特定的問題而用計算機語言編寫的有序指令序列的集合html
#include<stdio.h> int main(void){ printf("Hello World"); return 0; }
這個程序須要回答如下幾個問題:html5
程序是如何執行的 ?程序員
源文件(.c)(>=1個)頭文件(.h)(>=0個)
。源文件和頭文件在實際目錄中是在同一層目錄之下的,而咱們在編譯器中看到的則是一個虛擬目錄,自動分紅的目錄。二進制文件目標文件(.obj)
,進行語法錯誤
的檢查。編譯過程當中,是以源文件
爲基本單位的。可執行性的文件(.exe)
。(debug)
也是一個環節,但對於個別小程序來說,調試不是必須的過程。對上面程序是如何理解的 ?算法
標識符#、預處理指令include和頭文件
組成。#include是預處理指令
,它的做用是將指定的頭文件內容放到預處理指令的所在位置。printf庫函數
包含在stdio.h
裏(stdio表示standard input/output)
。<>表示系統文件
,即表示預處理的文件從系統規定的位置尋找頭文件""表示當前目錄下的頭文件
,即表示預處理的文件先從當前目錄下進行尋找,若經過,繼續進行下面的編譯,若沒有再從系統中尋找頭文件。main
函數是可執行程序的入口函數。一個C程序
有且只有一個main函數
。問題的求解須要用到算法,算法主要有如下幾個特徵:編程
變量的定義:小程序
內存中一塊連續的空間
起一個名字,經過這個名字來操做它,這個名字就是變量名
,也叫作標識符
。變量聲明的基本語法:函數
/*數據類型 變量名1, 變量名2 …, 變量名n;*/ int a;// 定義了一個變量a,a的數據類型是int型
變量命名的規範:學習
數字,字母和下劃線_
組成不能打頭
關鍵字
區分
大小寫變量的賦值:spa
變量能夠先定義再賦值,也能夠在定義的同時進行賦值;在定義變量的同時賦初值稱爲初始化
。
注意,在定義中不容許連續賦值,如a=b=c=5是不合法的
。翻譯
常考試題:
( D
)是合法的用戶自定義標識符。
A.case
(關鍵字) B.123f
(數字) C. #html5
(符號) D. _int
整型數據的分類和範圍
short
2
個字節int
2/4
個字節(8位和16位系統是2字節,32位系統是4字節,64位系統仍是4字節)long
4/8
個字節(除了64位系統是8字節,其餘都是4字節)long long int
或long long
8
個字節 (VC6.0不支持,是在C99中添加的)整型數據能夠分爲符號型和無符號型
,前綴帶有unsigned
的都是無符號型。在同一個編譯器和系統下,有符號
和無符號
表示的字節都是相同的
。
不一樣的系統必須知足sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)
各種型長度:
// short int short int(2字節佔16位) :-(2^15-1)~(2^15-1),即-32767~32767 unsigned short int(2字節佔16位):0~(2^16-1),即0~65535 // int int(32/64位系統,4字節佔32位):-(2^31-1)~(2^31-1),即-2147483647 ~2147483647 unsigned int(32/64位系統,4字節佔32位):0~(2^32-1),即0 ~ 4294967295 // long int long int(非64位系統,4字節佔32位):-(2^31-1)~(2^31-1),即-2147483647 ~2147483647 unsigned long int(非64位系統,4字節佔32位):0~(2^32-1),即0 ~ 4294967295 long int(64位系統,8字節佔64位):-(2^63-1)~(2^63-1),即 -9223372036854775807~9223372036854775807 unsigned long int(64位系統,8字節佔64位):0~(2^64-1),即 0~18446744073709551615 // long long int long long int(8字節佔64位):-(2^63-1)~(2^63-1),即 -9223372036854775807~9223372036854775807 unsigned long long int(8字節佔64位):0~(2^64-1),即 0~18446744073709551615
無符號類型長度總比有符號類型長度多一位
,好比16位int是±2^15-1,16位unsigned int倒是2^16-1
,是由於有符號整型
須要一個位
去做爲符號位,用於表示正負,因此少一位;而無符號整型不須要符號位,全部位所有用於表示整數。
整型數據在內存中存放的方式
補碼
的形式存儲的正數
:原碼、補碼、反碼相同負數
: 原碼:數值的二進制表示 反碼:符號位不變,數值的二進制按位取反 補碼:數值的反碼加1整型數據的表示方法
合法的十進制數
:23七、-56八、6553五、1627不合法的十進制數
:023 (不能有前導0)、23D (非十進制數碼)。0
開頭,即以0
做爲八進制數的前綴。數碼取值爲0~7
。八進制數一般是無符號數
。合法的八進制數
:015(十進制爲13)、0101(十進制爲65)、0177777(十進制爲65535);不合法的八進制數
:256(無前綴0)、03A2(包含了非八進制數碼)、-0127(出現了負號)。0X或0x
。其數碼取值爲0~9,A~F或a~f
。合法的十六進制數
:0X2A(十進制爲42)、0XA0 (十進制爲160)、0XFFFF (十進制爲65535);不合法的十六進制數
:5A (無前綴0X)、0X3H (含有非十六進制數碼)。字符型數據是用單引號
括起來的一個字符。例如:'a'、'b'、'='、'+'、'?'
都是合法字符型數據。
只能用單引號
括起來,不能用雙引號或其它括號。只能是單個字符
,不能是字符串。不能參與數值運算
。如'5'
和5
是不一樣的。'5'是字符型數據,不能參與運算。轉義字符
轉義字符是一種特殊的字符。轉義字符以反斜線"\"
開頭,後跟一個或幾個字符。轉義字符具備特定的含義,不一樣於字符原有的意義,故稱 「轉義」 字符。
轉義字符主要用來表示那些用通常字符不便於表示的控制代碼:
轉義字符 | 轉義字符的意義 | ASCII代碼 |
\n |
回車換行 | 10 |
\t |
橫向跳到下一製表位置 | 9 |
\b |
退格 | 8 |
\r |
回車 | 13 |
\f |
走紙換頁 | 12 |
\\ |
反斜線符"" | 92 |
\' |
單引號符 | 39 |
\" |
雙引號符 | 34 |
\a |
鳴鈴 | 7 |
\ddd |
1~3位八進制數所表明的字符 | |
\xhh |
1~2位十六進制數所表明的字符 |
字符類型說明符
字符變量的類型說明符是char
。字符變量類型定義的格式和書寫規則都與整型變量相同。例如:char a,b;
每一個字符變量被分配一個字節
的內存空間,所以只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內存單元之中的。
由ASCII碼能夠看出:
32
,經常使用的a爲97 A爲65
'3'
要變化成3
須要'3'-'0'=3
字符串
字符串是由一對雙引號
括起的字符序列。例如: "CHINA" ,"C program" , "$12.5"
等都是合法的字符串。
字符串和字符不一樣,它們之間主要有如下區別:
一個字節
的內存空間。字符串佔的內存字節數等於字符串中字節數加1
。增長的一個字節中存放字符"\0"
(ASCII碼爲0)。這是字符串結束
的標誌。實型數據類型指的就是浮點數或實數
實型數據類型的分類
類型說明符 | 比特數(字節數) | 有效數字 | 數的範圍 |
---|---|---|---|
float |
32(4) | 6~7 | -10^38~10^38 |
double |
64(8) | 15~16 | -10^308~10^308 |
由以上內容能夠看出:
實型數據的表示
0~9
和小數點
組成。 例如:0.0、25.0、5.78九、0.1三、5.0、300.、-267.8230 等均爲合法的實數。注意,必須有小數點。
"e"
或"E"
以及階碼(只能爲整數,能夠帶符號)組成。其通常形式爲:a E n(a爲十進制數,n爲十進制整數)
其值爲 a*10^n
。如:2.1E5
(等於2.1*10^5
) 3.7E-2
(等於3.7*10^-2
)實型數據在內存中的表示
前面的符號位很容易判斷爲0或者是1,指數部分稱之爲階碼
,這個階碼部分是由偏置值(127或1111111)和階碼真值
相加獲得的,階碼真值符合IEEE-754
標準,這個標準規定了是這個數必定能寫成1.--*2的多少次方
的形式,尾數部分的存儲是原碼的存儲
。
常量 | 說明 |
---|---|
直接常量(字面量) | 能夠當即拿來用,無需任何說明的量。 |
符號常量 | 用標識符表明一個常量。#define 標識符 常量 |
const 常量 |
const int x=3.14; |
int
型。也能夠根據其值所在範圍或後綴肯定其數據類型長整型字面值 123L 23l 無符號整型字面值 123U 123u 無符號長整型字面值 123UL 123ul long long型字面值 123ll 123LL
double
型,也可使用後綴f,F,l,L
肯定類型。求字符串的長度
字符串字面值是由一對雙引號括起來的字符序列(以'\0'
結束)。
'\0'
,佔據一個字節的內存。轉義字符佔據一個字節
,例如:'\xdd'
等。