C語言再學習--關鍵字
C語言一共有32個關鍵字,如下表所示:
關鍵字 |
說明 |
auto |
宣告自動變數 |
short |
宣告短整型變數或函式 |
int |
宣告整型變數或函式 |
long |
宣告長整型變數或函式 |
float |
宣告浮點型變數或函式 |
double |
宣告雙精度變數或函式 |
char |
宣告字元型變數或函式 |
struct |
宣告結構體變數或函式 |
union |
宣告共用資料型別 |
enum |
宣告列舉型別 |
typedef |
用以給資料型別取別名 |
const |
宣告只讀變數 |
unsigned |
宣告無符號型別變數或函式 |
signed |
宣告有符號型別變數或函式 |
extern |
宣告變數是在其他檔案正宣告 |
register |
宣告暫存器變數 |
static |
宣告靜態變數 |
volatile |
說明變數在程式執行中可被隱含地改變 |
void |
宣告函式無返回值或無引數,宣告無型別指標 |
if |
條件語句 |
else |
條件語句否定分支(與 if 連用) |
switch |
用於開關語句 |
case |
開關語句分支 |
for |
一種迴圈語句 |
do |
迴圈語句的迴圈體 |
while |
迴圈語句的迴圈條件 |
goto |
無條件跳轉語句 |
continue |
結束當前迴圈,開始下一輪迴圈 |
break |
跳出當前迴圈 |
default |
開關語句中的“其他”分支 |
sizeof |
計算資料型別長度 |
return |
子程式返回語句(可以帶引數,也可不帶引數)迴圈條件 |
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為迴圈條件 以上迴圈語句,當迴圈條件表示式為真則繼續迴圈,為假則跳出迴圈。
下面來詳細介紹各個關鍵字:
(簡單的就一筆帶過,有必要的會另起一篇文章,詳細講述。)
基本資料型別(5個) void char int float double 型別修飾關鍵字(4個) short long signed unsigned
1)在windows,32位系統中 char 1個位元組 short 2個位元組 int 4個位元組 long 4個位元組 double 8個位元組 float 4個位元組2)資料型別和佔位符之間的對應關係 char和unsingned char %c short %hd unsigned short %hu long %ld unsigned long %lu int %d unsigned int %u float %f/%g double %lf/%lg %f和%lf會保留小數點後面多餘的0 如 3.1400000 .2%f得 3.14 %g和%lg不會保留 如 3.14
規定整型值相互之間大小的規則:
長整型至少應該和整型一樣長,而整型至少應該和短整型一樣長。
3)signed、unsigned關鍵字
signed char取值範圍是 -2^7 到 2^7-1 unsigned char取值範圍是 0 到 2^8
signed int取值範圍是 -2^31 到 2^31-1 unsigned int取值範圍是 0 到 2^32
留兩個問題思考: 1), int i = -20; unsigned j = 10; i+j 的值為多少?為什麼?-10 應該是按照有符號的來計算的 2), 下面的程式碼有什麼問題? unsigned i ; for (i=9;i>=0;i--) { printf("%u\n",i); }一直列印無法停止,到了0 後,變成-1。因為-1是有符號的了,再變成 4294967295一直又減下去了
4)void關鍵字:
複雜型別關鍵字(5個) struct union enum typedef sizeof
1)struct
2)union、enum
3)typedef
4)sizeof
儲存級別關鍵字(6個) auto static register extern const volatile
1)auto、static、register、extern
2)const
3)volatile
2、流程控制關鍵字 A)跳轉結構(4個) return continue break goto
1)return
2)continue、break、goto
B)分支結構(5個) if else switch case default
1)if、else、switch、case、default
C)迴圈結構(3個) for do while
1)for、do、while
--------------------- 作者:聚優致成 來源:CSDN 原文:https://blog.csdn.net/qq_29350001/article/details/53021879?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!