C - 基本語法



C 程式設計 中,“語法”指的是為程式設計師編寫特定應用程式原始碼而制定的規則集。雖然 C 語言中的每個關鍵字都推薦使用特定的語法,但在開發 C 程式時,仍需要遵循某些通用規則。

一個典型的 C 程式原始碼包含以下元素:

/*Hello World program*/ // Comments

#include <stdio.h>   // Header File
int a=10;   // Global declarations

// The main function
int main() {		
   char message[] = "Hello World";  // Local variable
   printf("%s", message);
   return 0;
}

C 語言中的詞法單元

C 程式由各種 詞法單元 組成,一個詞法單元可以是關鍵字、識別符號、常量、字串字面量或符號。例如,以下 C 語句包含五個詞法單元:

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

各個詞法單元是:

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

C 編譯器 會識別詞法單元是關鍵字、識別符號、註釋、字面量、運算子,還是任何其他已識別的特殊符號。這個過程由編譯過程的第一階段中的詞法分析器完成。

C 語言中的識別符號

C 識別符號 是用於標識變數、函式或任何其他使用者定義項的名稱。識別符號以字母 A 到 Z、a 到 z 或下劃線 '_' 開頭,後跟零個或多個字母、下劃線和數字 (0 到 9)。

C 語言規定了形成變數、函式或其他程式設計元素名稱的某些規則。它們不是關鍵字。識別符號必須以字母或下劃線開頭,並且除了字母、數字和下劃線之外,不能包含任何其他字元。

C 語言不允許在識別符號中使用諸如 @、$ 和 % 等標點符號。C 語言是區分大小寫的程式語言。因此,Manpower 和 manpower 在 C 語言中是兩個不同的識別符號。以下是一些可接受的識別符號示例:

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

C 語言中的關鍵字

C 語言最重要的部分是它的關鍵字。關鍵字 是具有預定義含義和規定的使用語法的保留字。在 ANSI C 中,所有關鍵字都使用小寫字母。程式設計師需要選擇正確的關鍵字來構建問題的解決方案。學習程式設計基本上就是學習正確使用關鍵字。

以下列表顯示了 C 語言中的保留字。這些保留字不能用作常量、變數或任何其他識別符號名稱。

auto else long switch
break enum register typedef
case extern return union
char float short unsigned
const for signed void
continue goto sizeof volatile
default if static while
do int struct _Packed
double

除了本章中解釋的基本語法之外,C 語言中的每個關鍵字都具有明確定義的語法。每個關鍵字的用法將在後續章節中解釋。

C 語言中的分號

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

以下是兩個不同的語句:

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

由於分號“;”只是 C 語句的定界符,因此 C 程式中的一行物理行中可能有多個語句。同樣,單個語句也可能跨越多行原始碼。

以下行在 C 語言中完全有效。在一行中,有多個語句:

int a=10; if (a>=50) printf("pass"); else printf("fail");

即使語句跨越多行,以下程式碼也是有效的:

if
   (a>=50)
   printf("pass");
else printf("fail");

C 語言中的註釋

註釋 就像 C 程式中的輔助文字,編譯器會忽略它們。它們以 /* 開頭,以 */ 結尾,如下所示:

/* my first program in C */

註釋中不能巢狀註釋,並且它們不會出現在字串或字元字面量中。

原始碼

C 程式是一個文字檔案,包含一系列語句。該檔案必須以 .c 為副檔名。C 編譯器只識別 .c 檔案進行編譯。雖然字串字面量可以包含任何 Unicode 字元,但 C 語言的關鍵字和其他識別符號只使用英文字母。

main() 函式

每個 C 程式都必須有一個(且只有一個)main() 函式,編譯器從這裡開始執行程式碼。但是,main() 函式不必位於 .c 檔案程式碼的開頭。C 程式中可以有任意數量的函式。如果一個函式在其定義之前呼叫任何其他函式,則應該對其進行前向宣告。

標頭檔案

除了關鍵字之外,C 程式通常還需要從標頭檔案庫中呼叫預定義函式。所需的 標頭檔案使用 #include 預處理器指令 匯入。所有 #include 語句都必須位於原始碼的開頭。

變數宣告

C 語言是一種靜態型別語言。它要求在使用程式中出現的變數之前對其進行宣告。變數可以在全域性範圍內(即在任何函式之外)或在函式的作用域內區域性宣告。變數只能儲存其宣告型別的變數。這是 C 語言的重要規則之一。

C 程式中的語句

語句是程式的基本組成部分。預設情況下,`main()` 函式中的語句按從上到下的順序執行。順序由條件語句迴圈結構控制。作為基本語法規則,每個語句結尾必須有分號 (;)。

C程式中的空白字元

編譯原始碼時,編譯器會忽略空白字元。在C語言中,空白字元是指空格、製表符、換行符和註釋。雖然可以使用它們來提高程式碼的可讀性,但它們對編譯器幾乎沒有意義(除非它們是字串字面量的一部分,出現在雙引號內)。僅包含空白字元(可能還有註釋)的行被稱為空行,C編譯器會完全忽略它。

空白字元將語句的一個部分與另一個部分隔開,並使編譯器能夠識別語句中一個元素(例如 int)的結束位置和下一個元素的開始位置。因此,在以下語句中:

int age;

為了使編譯器能夠區分 `int` 和 `age`,`int` 和 `age` 之間必須至少有一個空白字元(通常是一個空格)。另一方面,在以下語句中:

fruit = apples + oranges;   // get the total fruit

“fruit”和“=”之間,或“=”和“apples”之間不需要空白字元,儘管您可以隨意新增一些以提高可讀性。

C語言中的複合語句

通常,您需要將一個連貫的語句塊定義為單個程式設計邏輯單元。例如,如果某個邏輯表示式為真,您可能希望執行多個語句,或者在迴圈塊中執行多個語句。同樣,使用者定義的函式可能包含多個語句。在這種情況下,語句被組合在一起形成複合語句。C語言使用花括號進行這種分組。

{
   Statement1;
   Statement2;
   . . . 
   . . . 
}

在以下程式碼中,if 和 else 部分各自包含一個語句塊。

int marks = 40;

if (marks<50) {
   printf("Result: Fail\n");
   printf ("Better Luck next time");
}
else {
   printf("Result: Pass\n");
   printf("Congratulations");
}

花括號也用於函式定義

float area_of_square(float side) {
   float area = pow(side,2);
   return area;
}

使用結構體聯合體或列舉定義自定義型別也需要用花括號將多個語句組合在一起。

struct student {   	
   char name[20];   	
   int marks, age;   
};

花括號還可以宣告陣列,如下所示:

int marks[ ]={50,56,76,67,43};  
廣告