C 基本語法

我們已經看過 C 程式的基本結構,這將有助於我們理解 C 語言的其他基本的構建塊。

C 的令牌(Tokens)

C 程式由各種令牌組成,令牌可以是關鍵字、識別字、常量、字串值,或者是一個符號。例如,下麵的 C 語句包括五個令牌:

printf("Hello, World! \n");

這五個令牌分別是:

printf
(
"Hello, World! \n"
)
;

分號 ;

在 C 程式中,分號是語句結束符。也就是說,每個語句必須以分號結束。它表明一個邏輯實體的結束。

例如,下麵是兩個不同的語句:

printf("Hello, World! \n");
return 0;

注釋

C 語言有兩種注釋方式:

// 單行注釋

// 開始的單行注釋,這種注釋可以單獨占一行。

/* 單行注釋 */
/*
 多行注釋
 多行注釋
 多行注釋
 */

/* */ 這種格式的注釋可以單行或多行。

您不能在注釋內嵌套注釋,注釋也不能出現在字串或字元值中。

識別字

C 識別字是用來標識變數、函數,或任何其他用戶自定義專案的名稱。一個識別字以字母 A-Z 或 a-z 或下劃線 _ 開始,後跟零個或多個字母、下劃線和數字(0-9)。

C 識別字內不允許出現標點字元,比如 @、$ 和 %。C 是區分大小寫的編程語言。因此,在 C 中,Manpowermanpower 是兩個不同的識別字。下麵列出幾個有效的識別字:

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

關鍵字

下表列出了 C 中的保留字。這些保留字不能作為常量名、變數名或其他識別字名稱。

關鍵字 說明
auto 聲明自動變數
break 跳出當前迴圈
case 開關語句分支
char聲明字元型變數或函數返回值類型
const 定義常量,如果一個變數被 const 修飾,那麼它的值就不能再被改變
continue結束當前迴圈,開始下一輪迴圈
default開關語句中的"其他"分支
do 迴圈語句的循環體
double 聲明雙精度浮點型變數或函數返回值類型
else條件語句否定分支(與 if 連用)
enum聲明枚舉類型
extern聲明變數或函數是在其他檔或本文件的其他位置定義
float聲明浮點型變數或函數返回值類型
for一種迴圈語句
goto無條件跳轉語句
if條件語句
int 聲明整型變數或函數
long 聲明長整型變數或函數返回值類型
register聲明寄存器變數
return 副程式返回語句(可以帶參數,也可不帶參數)
short聲明短整型變數或函數
signed聲明有符號類型變數或函數
sizeof計算數據類型或變數長度(即所占位元組數)
static 聲明靜態變數
struct聲明結構體類型
switch 用於開關語句
typedef用以給數據類型取別名
unsigned聲明無符號類型變數或函數
union聲明共用體類型
void聲明函數無返回值或無參數,聲明無類型指針
volatile說明變數在程式執行中可被隱含地改變
while 迴圈語句的迴圈條件

C99 新增關鍵字

_Bool _Complex _Imaginary inline restrict

C11 新增關鍵字

_Alignas _Alignof _Atomic _Generic _Noreturn
_Static_assert _Thread_local      

C 中的空格

只包含空格的行,被稱為空白行,可能帶有注釋,C 編譯器會完全忽略它。

在 C 中,空格用於描述空白符、跳位字元、換行符和注釋。空格分隔語句的各個部分,讓編譯器能識別語句中的某個元素(比如 int)在哪里結束,下一個元素在哪里開始。因此,在下面的語句中:

int age;

在這裏,int 和 age 之間必須至少有一個空格字元(通常是一個空白符),這樣編譯器才能夠區分它們。另一方面,在下面的語句中:

fruit = apples + oranges;   // 獲取水果的總數

fruit 和 =,或者 = 和 apples 之間的空格字元不是必需的,但是為了增強可讀性,您可以根據需要適當增加一些空格。