某些時候,在嵌套使用if語句時,所有if語句看起來都非常相似,因為它們都在對一個完全相同的運算式進行求值,惟一的區別是每個if語句都將運算式的結果與一個不同的值進行比較。例如:
if (day == 0)
dayName = "Sunday";
else if (day == 1)
dayName = "Monday";
else if (day == 2)
dayName = "Tuesday";
else if (day == 3)
...
else
dayName = "Unknown";
在這些情況下,通常需要將嵌套的if語句改寫為一個switch語句,使程式更有效、更容易懂。
理解switch語句的文法
switch語句的文法如下(switch,case和default是關鍵字):
switch ( controllingExpression )
{
case constantExpression :
statements
break;
case constantExpression :
statements
break;
...
default :
statements
break;
}
controllingExpression(控製表達式)只求值一次。然後,從其constantExpression值等於controllingExpression值的case開始,它下方的所有語句都會一直運行,直到遇到一個break為止。隨後,switch語句將結束,程式從switch結束大括弧之後的第一個語句繼續執行,並忽略其他case。
假如任何一個constantExpression值都不等於controllingExpression的值,就運行可選標籤default之下的語句。
注意 假如controllingExpression的值和任何一個case標籤都不匹配,同時沒有發現一個default標籤,程式會跳過整個switch語句,從它的結束大括弧之後的第一個語句繼續執行。
例如,前面的嵌套if語句可以改寫為以下switch語句:
switch (day)
{
case 0 :
dayName = "Sunday";
break;
case 1 :
dayName = "Monday";
break;
case 2 :
dayName = "Tuesday";
break;
...
default :
dayName = "Unknown";
break;
}