C語言關鍵字綜述

ANSI C標準C語言共有32個關鍵字,如下:

auto

break case char const continue

default

do
double else enum extern

float

for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned

void

volatile

while

1999年12月16日,ISO推出了C99標準,該標準新增了5個C語言關鍵字:

inline restrict _Bool _Complex _Imaginary

2011年12月8日,ISO發佈C語言的新標準C11,該標準新增了7個C語言關鍵字:

_Alignas _Alignof _Atomic _Static_assert _Noreturn _Thread_local _Generic

目前一般用的C語言都是ANSI C標準,部分編譯器支持C99標準。注意,C語言的關鍵字是區分大小寫的。編程鳥在其博客C語言關鍵字解析中,對這些關鍵字進行了分類,在此借鑑一下,我按照此分類對ANSI C標準的C語言關鍵字做簡要介紹。

第一類,有關數據“模子”的關鍵字:void、char、short、int、long、float、double、sizeof;
第二類,有關數據符號的關鍵字:signed、unsigned;
第三類,構造類型:struct、union、enum、typedef;
第四類,有關存儲與生命週期的類型:auto、static、extern、register、const、volatile;
第五類,有關語句的類型:if、else、for、while、do、switch、case、default、goto、break、continue、return

C語言關鍵字
數據類型 void 聲明函數無返回值或無參數,聲明無類型指針  
char 聲明字符型變量或函數  
short 聲明短整型變量或函數
int 聲明整型變量或函數
long 聲明長整型變量或函數 
float 聲明浮點型變量或函數
double 聲明雙精度變量或函數
sizeof 計算數據類型長度
數據符號 signed 聲明有符號類型變量或函數
unsigned 聲明無符號類型變量或函數

構造類型

struct 聲明結構體變量或函數
union 聲明共用數據類型
enum 聲明枚舉類型
typedef 用以給數據類型取別名
有關存儲與生命週期的類型 auto 聲明自動變量
static 聲明靜態變量
extern 聲明變量是在其他文件
register 聲明寄存器變量
const 聲明只讀變量
volatile 說明變量在程序執行中可被隱含地改變
有關語句的類型 if 條件語句
else 條件語句否定分支(與 if 連用)
for 一種循環語句
while 循環語句的循環條件
do 循環語句的循環體
switch 用於開關語句
case 開關語句分支
default 開關語句中的“其他”分支
goto 無條件跳轉語句
break 跳出當前循環
continue 結束當前循環,開始下一輪循環
return 子程序返回語句(可以帶參數,也可不帶參數)循環條件

關鍵字的大概說明如上表所示。本文不對每一個關鍵字做詳細介紹,個人認爲數據類型、符號類型和有關語句的類型不是難點,本文從這3個類型中選幾個可能出錯的稍作展開。

數據類型和數據符號

數據類型是最基本的關鍵字,表示一個變量的類型。不同的類型所佔的字節大小不同,我用VS2010驗證如下:

        int i;
	unsigned int ii;
	char c;
	short sh;
	double dou;
	float f;
	long l;
	long int li;
	long long int lli;
	char str1[]={"abcde"};
	char str2[]={'a','b','c','d','e'};
	char str3[5]={"abcde"};

	printf("length of int: %d\r\n",sizeof(i));
	printf("length of unsigned int: %d\r\n",sizeof(ii));
	printf("length of char: %d\r\n",sizeof(c));
	printf("length of short: %d\r\n",sizeof(sh));
	printf("length of double: %d\r\n",sizeof(dou));
	printf("length of float: %d\r\n",sizeof(f));
	printf("length of long: %d\r\n",sizeof(l));
	printf("length of long int: %d\r\n",sizeof(li));
	printf("length of long long int: %d\r\n",sizeof(lli));
	printf("length of str1: %d\r\n",sizeof(str1));
	printf("length of str2: %d\r\n",sizeof(str2));
	printf("length of str3: %d\r\n",sizeof(str3));

這裏注意sizeof是用來計算變量所佔空間大小,單位爲字節。輸出結果如下:

數據類型和數據符號配合使用,C語言默認類型都是有符號的,只有前面用unsigned修飾,才表示無符號類型。

不同的系統數據類型的長度是不一樣的,我的VS2010是32位系統的。32位系統和64位系統比較如下(表格中長度單位是比特):

I表示:int類型
L表示:long類型
P表示:pointer指針類型
32表示32位系統
64表示64位系統

字符串長度

上面的例子中對字符串進行了簡單表示。可以發現str1、str2、str3長度是不一樣的。

像str1這樣不指定數組長度,直接用雙引號賦值,除了正常的字符串外,在字符串最後,系統會默認加一個‘\0’,表示結束。所以str1的長度就是6字節;

像str2這樣雖不指定數組長度,但是用單引號賦值,數據長度就是實際字符個數。所以str2長度就是5字節;

像str3這樣指定數據長度,用雙引號賦值,sizsof顯示長度是數組指定的長度,也就是5字節。

構造類型和有關存儲於生命週期的類型

構造類型和有關存儲於生命週期的類型,將另寫專題文章進行講解,這兩個類型的每一個關鍵字都比較重要,且展開講解也需要大量篇幅。瞭解詳細介紹,點擊下面鏈接即可。

C語言關鍵字之static

C語言關鍵字之extern

C語言關鍵字之register

C語言關鍵字之const

C語言關鍵字之volatile

C語言關鍵字之struct

C語言關鍵字之union

C語言關鍵字之enum

C語言關鍵字之typedef

 

參考文獻:

[1]https://blog.csdn.net/m0_38121874/article/details/82535129

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章