Conditional Statements

條件判斷

程式語言一 · 導覽投影片

→ / space 前進  回 Esc 總覽 F 全螢幕
導覽:建框架。完整內容在 PDF,可跑範例在 index。

01if / else / else if 鏈

if (s >= 90) printf("A\n");
else if (s >= 80) printf("B\n");
else printf("F\n");

從上到下,第一個成立就進去、後面全跳過。所以 嚴格的條件放上面、寬鬆的放下面。`if`/`else` 只走一條路。

02永遠加大括號

if (x > 0)
    printf("正\n");
printf("x=%d\n", x);   // 不在 if 裡,永遠執行!
沒大括號時 if 只管下一個敘述。Apple 2014「goto fail」漏洞就栽在這。永遠加 {}

03真假與 = 陷阱

C 真假:0 是假(含 '\0'NULL)、非零都是真

int x = 5;
if (x = 0) ... else ...   // x=0 是指派、回傳 0=假 → else,且 x 變 0!

要比較用 ==-Wall 會幫你抓。

04dangling else

if (a)
    if (b) printf("A\n");
    else   printf("B\n");   // 這 else 配誰?

else 配對最近的 if(配 if(b))。加大括號就沒有歧義

05獨立 if vs else if

寫法x = 50
三個獨立 if(各自檢查)「正」「大」都印
else if 鏈(互斥)只印一個

求最大值用獨立 if:max=a; if(b>max)max=b; if(c>max)max=c;

06switch:多路分支

switch (n) {
    case 1: printf("one\n"); break;   // 別忘 break!
    case 2: printf("two\n"); break;
    default: printf("other\n");
}

每個 case 結尾要 break,否則貫穿繼續執行下一個 case。

next

接著動手

PDFindex 跑 grade/switch/三數max → 本地練習 5 題(奇偶/分級/閏年…)→ Quizlet + 測驗卷 ≥ 90%。