C语言再学习--关键字
如需轉載請注明出處:https://blog.csdn.net/qq_29350001/article/details/53021879
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 | 子程序返回語句(可以帶參數,也可不帶參數)循環條件 |
?
參看:C語言32個關鍵字詳解
?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
?
規定整型值相互之間大小的規則:
長整型至少應該和整型一樣長,而整型至少應該和短整型一樣長。
?
擴展:C語言再學習 5--浮點數
擴展:C語言再學習 19 -- 負數
?
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關鍵字:
參看:C語言再學習 19 -- void
復雜類型關鍵字(5個)
?struct
?union
?enum
?typedef
?sizeof
1)struct
參看:C語言再學習 -- 關鍵字struct(轉)
?
2)union、enum
參看:C語言再學習 -- 結構和其他數據形式
?
3)typedef
參看:C語言再學習 -- 關鍵字typedef
?
4)sizeof
參看:C語言再學習 -- sizeof與strlen
存儲級別關鍵字(6個)
?auto
?static
?register
?extern
?const
?volatile
1)auto、static、register、extern
參看:C語言再學習 -- 存儲類型關鍵字
?
2)const
參看:C語言再學習 -- 關鍵字const
?
3)volatile
參看:C語言再學習 -- 關鍵字volatile
?
2、流程控制關鍵字
?A)跳轉結構(4個)
?return
?continue
?break
?goto
?
1)return
參看:C語言再學習 -- 關鍵字return和exit
?
2)continue、break、goto
參看:C語言再學習 -- 分支與跳轉語句
?B)分支結構(5個)
?if
?else
?switch
?case
?default
?
1)if、else、switch、case、default
參看:C語言再學習 -- 分支與跳轉語句
?C)循環結構(3個)
?for
?do
?while
?
1)for、do、while
參看:C語言再學習 -- 循環語句
如需轉載請注明出處:https://blog.csdn.net/qq_29350001/article/details/53021879
總結
以上是生活随笔為你收集整理的C语言再学习--关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未来社区及其趋势探索
- 下一篇: 博客转载 声明