2016年11月27日 星期日

[筆記] 深入了解 switch-case

  之前在課堂的作業中第一次看到神奇的 switch-case 用法,藉著機會研究一番;剛好朋友也詢問了類似的問題,也查看更多資料,完全顛覆我以前對 switch-case 的理解。因此藉著這篇文章來記錄我所查到的知識,也順便掃掃灰塵((汗。

  最初學到的 switch-case 用途是「多重選擇」,也就是說用來取代一連串的 if-else statement 對於一個變數的連續判斷,如以下的例子:
if (value == 0)
    printf("Grade S\n");
else if (value == 1)
    printf("Grade A\n");
else if (value == 2)
    printf("Grade B\n");
else if (value == 3)
    printf("Grade C\n");
else
    printf("Grade D\n");
可以用 switch-case 取代成:
switch (value) {
    case 0:
        printf("Grade S\n");
        break;
    case 1:
        printf("Grade A\n");
        break;
    case 2:
        printf("Grade B\n");
        break;
    case 3:
        printf("Grade C\n");
        break;
    default:
        printf("Grade D\n");
        break;
}
基礎複習完了,大家可以回家了。

以下會討論到:
  • 在 switch-case 中宣告變數
    • switch 之下,case 之前
    • 在 case 中宣告變數
    • 不同 case 之間宣告相同名稱的變數
  • 不只是 if-else 的替代品 (對於一個變數的連續判斷)
而接下來的討論皆引用 C98/99 的規格書,需要一點 language syntax 的概念。