任何高級語言都有自定義的詞法符號和支持的數據類型。
詞法符號是語言的基本組成單位,數據類型是數據的基本屬性。這裏我將先對C語言的C法符號做一個小的總結,既是對我自己C語言的一個系統的整理與提高,也希望對希望提高C語言有所幫助,對於數據類型我將在隨後一段時間總結介紹。
詞法符號是程序設計語言中有若干字符組成的有意義的最小語法單位。
按照詞法符號在程序中的作用可以分爲:關鍵字、標識符,分隔符、運算符和標點符。
1.1關鍵字:是由系統預定義的詞法符號,有特定的含義,不允許用戶重新定義,所以在定義標識符的時候不能與關鍵字重名。基本的關鍵字有32個,分別如下:
C語言關鍵字分爲兩個大的類型,其中兩種大的類型又分爲七種小的類型:
1數據類型關鍵字
A基本數據類型(5個)
void:聲明函數無返回值或無參數,聲明無類型指針,顯式丟棄運算結果
char:字符型類型數據,屬於整型數據的一種
int:整型數據,通常爲編譯器指定的機器字長
float:單精度浮點型數據,屬於浮點數據的一種
double:雙精度浮點型數據,屬於浮點數據的一種
B類型修飾關鍵字(4個)
short:修飾int,短整型數據,可省略被修飾的int。
long:修飾int,長整形數據,可省略被修飾的int。
signed:修飾整型數據,有符號數據類型
unsigned:修飾整型數據,無符號數據類型
C複雜類型關鍵字(5個)
struct:結構體聲明
union:共用體聲明
enum:枚舉聲明
typedef:聲明類型別名
sizeof:得到特定類型或特定類型變量的大小
D存儲級別關鍵字(6個)
auto:指定爲自動變量,由編譯器自動分配及釋放。通常在棧上分配。
static:指定爲靜態變量,分配在靜態變量區,修飾函數時,指定函數作用域爲文件內部。
register:指定爲寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數。
extern:指定對應變量爲外部變量,即在另外的目標文件中定義,可以認爲是約定由另外文件聲明。
const:與volatile合稱“cv特性”,指定變量不可被當前線程/進程改變(但有可能被系統或其他線程/進程改變)。
volatile:與const合稱“cv特性”,指定變量的值有可能會被系統或其他進程/線程改變,強制編譯器每次從內存中取得該變量的值。
2流程控制關鍵字
A跳轉結構(4個)
return:用在函數體中,返回特定值(或者是void值,即不返回值)
continue:結束當前循環,開始下一輪循環
break:跳出當前循環或switch結構
goto:無條件跳轉語句
B分支結構(5個)
if:條件語句
else:條件語句否定分支(與if連用)
switch:開關語句(多重分支語句)
case:開關語句中的分支標記
default:開關語句中的“其他”分治,可選。
C循環結構(3個)
for:for循環結構,for(1;2;3)4;的執行順序爲1->2->4->3->2...循環,其中2爲循環條件
do:do循環結構,do 1 while(2);的執行順序是1->2->1...循環,2爲循環條件
while:while循環結構,while(1) 2;的執行順序是1->2->1...循環,1爲循環條件
以上循環語句,當循環條件表達式爲真則繼續循環,爲假則跳出循環。
以上各種類型的關鍵字的用法在這裏就不再詳細的介紹了。相信隨着大家對C語言的深入瞭解後都會碰見的。
1.2標識符:標識符是由程序員按照命名規則自行定義的詞法符號,用於宏定義、變量名、函數名和自定義類型名等。其命名規則如下:
1)、標識符由一個或多個字母、數字或下劃線組成;
2)、標識符的第一個字符必須是字母或下劃線;
3)、標識符不能與任何關鍵字相同;
1.3 分隔符:包括逗號、空白符、分號和冒號。
1.4運算符:表示運算的詞法符號,C語言有着非常豐富的運算符,按其功能分,如下表:
其中特別要注意:
1)、算術求餘運算不支持浮點運算,整除運算符“/”兩邊的操作數都爲整數時其值才取整數;
2)、關係運算符"=="、">="、"<="、"!="中間不能有空格。還要特別注意不要把"=="與賦值運算符"="等同,"=="表示判斷左右兩邊是否相等;
3)、一定要留意位運算符"&&"、"||"短路特性;
4)、位運算符的運算對象必須是整數,浮點類型的不支持位運算;
5)、在擴展的賦值運算符如"&="等間沒有空格符號;
6)sizeof是32個關鍵字中的一種,看到sizeof()不要認爲就是函數;
大概的將C語言運算符中需要注意的都一一列舉了下,難免有不全之處,望不吝賜教!^-^
1.5標點符:
C語言中的標點符共有13個,即:[ ] () { } * ,: = ;… # &(取地址)->(指向) .