// 單分支
if (x % 2) y += x / 2;
// 雙分支
if (x % 2 == 0) y += x / 2;
else y += (x + 1) / 2;
// 多分支
if (x % 2 == 0) y += x / 2;
else if (x % 4 == 1) y += 2 * ((x + 3) / 4);
else y += (x + 1) / 2;
switch (ch) {
case 'Y':
case 'y': // 故意貫穿處理大小寫
puts("Yes"); break;
case 'N': case 'n':
puts("No"); break;
default:
puts("Invalid");
}
case 標籤必須為整型常量表達式,不可為變量。break 將繼續執行下一 case。利用此特性合併情況,或用 [[fallthrough]] (C23) 顯式標註。default 可選,位置任意 (通常置末)。
while (condition) {
// loop body
}
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) { // C99 支持循環內聲明 i
result *= i;
}
return result;
}
三部分:初始化; 條件; 調整,均可省略但分號必保留。
for (;;) 等價 while(1) 無限循環。for (i=0, j=n; i。 for,條件複雜/非計數用 while。
do {
// 至少執行一次
} while (condition);
; 不可少。| 語句 | 作用 | 適用範圍 |
|---|---|---|
break | 立即退出最內層循環或 switch | for, while, do-while, switch |
continue | 跳過本次循環剩餘部分,直接進入下一次迭代 (for 執行調整部分) | for, while, do-while |
goto label | 無條件跳轉到標號 | 慎用,僅用於錯誤處理統一出口等極少數場景 |
return | 退出當前函數 | 函數內部 |
for/while 結構化循環,避免 goto。switch 處理多值匹配優於長 if-else 鏈 (編譯器可優化為跳轉表)。