發信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信區: test
標 題: 星星流講座 0023
發信站: ☆清華電機☆ (Fri May 26 09:30:53 1995)
轉信站: star
星星流講座 0023 C 語言教室
第 4 講 之 7 基本的流程控制
Topic: switch
有的時候我們會遇上像下面的情形:
() 開始
↓
□ 輸入選擇項
↓ 是
◇ 選擇項為 A? → 功能 A
↓否 是
◇ 選擇項為 B? → 功能 B
↓否 是
◇ 選擇項為 C? → 功能 C
↓否 是
◇ 選擇項為 D? → 功能 D
↓否
() 結束
如果我們用 if-else 來做,就會像這樣:
/* choose.c */
void A (void);
void B (void);
void C (void);
void D (void);
void main (void)
{
char c;
scanf ("%c", &c);
if (c == 'A') /* NOTICE: == is not = */
A ();
else if (c == 'B')
B ();
else if (c == 'C')
C ();
else if (c == 'D')
D ();
}
程式寫成這樣實在是非常嚕囌,這時候可以用 switch-case 來代換上面的程式:
/* choose.c */
void A (void);
void B (void);
void C (void);
void D (void);
void main (void)
{
char c;
scanf ("%c", &c);
switch (c)
{
case 'A': A ();
break;
case 'B': B ();
break;
case 'C': C ();
break;
case 'D': D ();
break;
default: break;
}
}
上面的程式示範了 switch-case 的用法,它把每一種可能的 case 列出來,
然後執行對應的敘述。上面的程式有兩個該注意的地方:一個是 break 這個
指令,另一個是 default 這個 case。
default 的意思就是如果所列出的 case 都不符合時,就執行 default 後的
敘述。break 的意思是中斷 switch 的執行,這是什麼意思呢?我們以下面的
例子來說明:
switch (c)
{
case 'A': A ();
case 'B': B ();
break;
default: break;
}
當 c == 'A' 的條件成立的時候,會去執行 A () 這個函數,執行完了之後,
它會繼續執行 B () 這個函數,因為沒有 break 敘述中斷它。會這麼做
的原因很簡單,因為
switch (c)
{
case 'A':
case 'a': A ();
break;
default: break;
}
很多時候兩個 case 會對應到同一個東西,所以可以利用 break 與否的特性來達
成我們的目的。