本文系統梳理 C 語言基礎:變量命名、數據類型、常量分類、聲明初始化、運算符優先級與結合性、類型轉換規則、自增自減陷阱、位運算應用、賦值運算符、條件表達式,構建完整知識框架。
| 類型 | 關鍵字 | 說明 |
|---|---|---|
| 字符 | char | 1 字節,可作小整數運算 |
| 整型 | int | 機器字長,通常 4 字節 |
| 單精度 | float | 4 字節,~6 位有效數字 |
| 雙精度 | double | 8 字節,~15 位,推薦數學運算用 |
限定符:short/long 修飾 int;signed/unsigned 修飾 char 和整型;long double 高精度浮點。
'\0' 為空字符(值 0)'\0',存儲長度 = 可見字符數 + 1enum NAME {A=0, B, C=5}; 替代 #define,具類型安全、作用域、可調試#define MAX 1000; char buf[MAX+1];int i = 0; int len = MAX + 100; const int PI = 3.14; // 常量,不可修改 const char msg[] = "00000"; // 數組元素不可修改 int strlen(const char s[]); // 參數不可修改
+ - * / %(% 僅整型,整除截斷)> >= < <=(同級)== !=(優先級低於關系)&& ||(短路求值,左到右,&& 優先於 ||)= += -= *= /= %= <<= >>= &= ^= |=(右結合)? :(右結合,僅求值一分支)關鍵:關系/邏輯表達式值為 1(真)或 0(假);! 將非 0 轉 0,0 轉 1。
(type)expr 顯式指定經典 atoi 利用字符連續性:n = 10*n + (s[i]-'0')
++n // 先增後用 n++ // 先用後增 // 只能作用於變量,不能用於表達式如 (a+b)++ // strcat 經典用法:while((s[i++] = t[j++]) != '\0');
& 屏蔽位(掩碼)| 置位^ 翻轉位/交換值<< >> 乘除 2 的冪、提取位段~ 取反僅適用於整型(含 char)。
z = (a > b) ? a : b; // max // expr2、expr3 只有一個被求值,可用於副作用控制
掌握這些核心規則,是寫出正確、高效、可移植 C 代碼的基石。