本文為「不可或缺 Windows Native」系列第三篇,系統梳理 C 語言運算符、表達式、條件/循環/轉向語句及空語句,配備完整示例代碼,適合快速查閱與夯實基礎。
| 類別 | 運算符 | 說明 |
|---|---|---|
| 算術 | + - * / % ++ -- | 取模僅限整數;++/-- 前後綴區別 |
| 關係 | > < == >= <= != | 結果為 0/1 |
| 邏輯 | && || ! | 短路求值 |
| 位操作 | & | ~ ^ << >> | &: 按位與;|: 按位或;^: 異或;~: 取反 |
| 賦值 | = += -= *= /= %= &= |= ^= >>= <<= | 復合賦值 |
| 條件 | ?: | 三目運算符 |
| 指針 | * & | 取內容/取地址 |
| 其他 | sizeof | 關鍵字,非函數,編譯期計算類型/變量字節數 |
// 位運算示例 1001 & 0001 = 0001 // 與 1001 | 0001 = 1001 // 或 1001 ^ 0001 = 1000 // 異或 ~1001 = 0110 // 非 // 遞增遞減區別 int i = 0; i++; // 表達式值 0,i 變 1 int j = 0; ++j; // 表達式值 1,j 變 1 // sizeof 用法 int intSize = sizeof(short); // 類型大小(平台相關) char *str = "abc..."; int dataSize = sizeof(str); // 指針大小(4/8 字節),非字符串長度
表達式後加分號,如 i++;、func();。
{ int p1 = 1; int p2 = 2; } // 作用域限制在大括號內
while (0) { ; } // 僅有分號
while (0) ; // 等價
while (0); // 等價,常用於空循環體
// if-else
if (a == 1) b = 1;
else if (a == 2) b = 2;
else b = 3;
// switch-case
switch (x) {
case 1: y = 2; break;
case 2: y = 3; break;
default: y = 4;
}
// 三目運算符
m = n == 1 ? 2 : 3;
// while
while (i < 100) i++;
// do-while(至少執行一次)
do { j++; } while (j < 100);
// for 多種形式
for (i = 0; i < 100; i++) { }
for (i = 0; i < 100; ) { i++; }
for (i = 0, j = 0; i < 100 && j < 100; i++, j++) { i++; j++; }
for ( ; z < 100; ) { z++; }
break:跳出最近層循環或 switch。continue:跳過本次循環剩餘部分,直接進入下一次判斷。return:退出函數,可帶返回值。goto:跳轉至標識符。合理場景:多層嵌套循環需一次性跳出。int result = 0;
myAnchor:
if (result == 1) result = 100;
if (result == 0) { result = 1; goto myAnchor; }
項目包含兩組頭文件/源文件對:
cOperator.h/.c —— 運算符演示
cStatement.h/.c —— 語句演示
均導出 demo_xxx() 函數供主程序調用,配合 cHelper.h 字符串輔助函數。