首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言語句分類總覽:五大類語句構建程式骨架

     編輯:關於C語言

C 程式的執行部分由語句組成,語句是程式執行的最小單元。理解 C 語言的五大語句類別、它們的語法形式、執行語義、以及相互轉換關係,是掌握程式流程控制、寫出結構化代碼的基礎。本文系統梳理表達式語句、函數調用語句、控制語句、復合語句、空語句五大類別,並給出識別判斷指南。

C 程式結構回顧

C程式結構圖

C 程式 = 預處理指令 + 全局聲明 + 主函數 main() + 其他函數
主函數體 = 語句序列(包含在 { } 中)

五大語句類別完整對照表


1. 表達式語句:最基礎、最常用

形式:表達式;

執行語義:計算表達式的值(副作用生效,值被丟棄)。

三大典型子類

類別關鍵字/標識一般形式核心功能範例
1. 表達式語句無關鍵字,以 ; 結尾表達式;計算表達式值(含副作用)x = y + z; i++; func();
2. 函數調用語句函數名 + () + ;函數名(實參表);調用函數,傳遞參數,獲取返回值printf("Hello"); scanf("%d",&x);
3. 控制語句9個關鍵字特定語法結構控制程式流程(分支/循環/跳轉)if/else, switch, for, while, break...
4. 復合語句{ } 包圍{ 語句序列 }將多語句合為單一語句單元{ x=y+z; a=b+c; printf(...); }
5. 空語句只有 ;;什麼都不做,佔位while(getchar()!='\n');

⚠️ 注意

y + z;  // 無副作用表達式語句,GCC -Wall 警告: "statement with no effect"
x = y + z;  // 有副作用(修改 x),正常

2. 函數調用語句:模組化的橋樑

形式:函數名(實際參數表);

執行語義:

  1. 求值所有實際參數(順序未規定)
  2. 將值傳遞給形式參數(按值傳遞)
  3. 跳轉執行函數體
  4. 遇 return 或函數結尾返回
  5. 調用表達式的值為函數返回值(若為 void 則無值)

範例

printf("C Program");  // 調用庫函數,輸出字符串,返回輸出字符數(通常忽略)
x = max(a, b);        // 調用自定義函數,接收返回值賦給 x

3. 控制語句:程式流程的導航儀

C 語言有 9 種控制語句,分為三大類:

3.1 條件判斷語句 (2 種)

  • if 語句:單分支 if、雙分支 if-else、多條件 if-else if-else
  • switch 語句:多路分支,配合 case/default/break

3.2 循環執行語句 (3 種)

  • while 語句:先判斷後執行,零次或多次
  • do-while 語句:先執行後判斷,至少一次
  • for 語句:初始化、條件、迭代三合一,計數循環首選

3.3 轉向語句 (4 種)

  • break:跳出最近的 switch/while/do-while/for
  • continue:跳過本次循環剩餘部分,直接進入下次迭代判斷
  • goto:無條件跳轉到標號(慎用)
  • return:從函數返回,可帶返回值

4. 復合語句:結構化的基本單元

形式:{ 語句₁; 語句₂; ... 語句ₙ; }

核心規則

  • 視為單條語句:任何需要單條語句的地方(如 if 後、while 體)都可用復合語句替代
  • 內部語句必須以 ; 結尾
  • 右大括號 } 後不能加分號(這是語句塊結束,非語句)
  • 可嵌套:形成作用域層級

範例

  1. {
  2. x = y + z;
  3. a = b + c;
  4. printf("%d%d", x, a);
  5. }

這是一條復合語句,可用於 if (cond) { ... } 中。

作用域與聲明

C99 之前:聲明必須在復合語句開頭。
C99 之後:聲明可混合在語句中。
變量生命週期:自動變量在進入塊時創建,離開塊時銷毀。


5. 空語句:最神秘的佔位符

形式:;(單獨一個分號)

語義:什麼都不執行,直接進入下一條語句。

兩大經典用途

用途 1:空循環體

  1. while (getchar() != '\n');

功能:讀取並丟棄輸入緩衝區中直到換行符的所有字符。循環體為空語句。

用途 2:for 循環的全部工作在控制部分

for (i = 0; i < n; sum += a[i++]);  // 求和,循環體為空
// 等價於
for (i = 0; i < n; i++) sum += a[i];

用途 3:標號後的空語句 (C99+)

label: ;  // 標號後必須跟語句,空語句滿足語法

⚠️ 危險:誤加分號導致的邏輯錯誤

if (x > 0);  // ❌ 這裡有個空語句!
    printf("x is positive");  // 無條件執行!

while (i < 10);  // ❌ 無限循環!空語句做循環體
    i++;         // 永遠不執行

語句識別快速判斷指南

子類範例說明
賦值語句x = y + z;計算右側,存入左側,副作用:修改 x
運算語句(無副作用)y + z;計算結果丟棄,通常無意義,編譯器會警告
自增/自減/函數調用i++; func();副作用為主:修改變量/執行函數體

語句與表達式的本質區別

代碼片段語句類別判斷依據
x = 1;表達式語句(賦值)有 = 運算符,以 ; 結尾
printf("hi");函數調用語句(也是表達式語句)函數名() 形式,以 ; 結尾
if (x) y=1;控制語句關鍵字 if 開頭
{ x=1; y=2; }復合語句{ } 包圍多語句
;空語句只有分號
for(;;);控制語句(含空語句體)for 關鍵字,體為 ;

總結

C 語言的五大語句類別構成了程式的完整骨架:

  • 表達式語句承擔計算與副作用(賦值、函數調用)
  • 控制語句實現邏輯分支、循環、跳轉
  • 復合語句提供結構化塊與作用域
  • 空語句作為特殊佔位符服務於空循環體等場景

掌握每類語句的語法形式、執行語義、嵌套規則、常見陷阱(特別是空語句誤用),是寫出正確、清晰、可維護 C 代碼的必備基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
維度表達式語句
有值/類型是否 (除表達式語句外)
可嵌套是 (運算元可為表達式)否 (語句不能嵌套在表達式中)
以 ; 結尾否是 (表達式語句/函數調用/空語句)
控制流程否是 (控制語句)
建立作用域否是 (復合語句)