switch(計算機語言關鍵字)

switch(計算機語言關鍵字)

Switch在一些計算機語言中是保留字,其作用大多情況下是進行判斷選擇。以C語言來說,switch(開關語句)常和case break default一起使用。

基本介紹

  • 中文名:開關語句
  • 外文名:switch
  • 屬性:計算機語言保留字
  • 類別:選擇結構語句
典型結構,語法,

典型結構

switch(controllingExpression){    case constantExpression1:statement1;break;    case constantExpression2:statement2;break;    case constantExpression3:statement3;break;        default:statement;}

語法

C語言程式語句
Switch用在編程中,如C語言中它經常跟Case一起使用,是一個判斷選擇代碼。其功能就是控制流程流轉的。
直線翻譯:switch語句,即“切換”語句;case即“情況”。
switch語句的語法如下(switch,case,break和default是關鍵字):
switch ( 變數表達式 )
{
case 常量1 :語句;break;
case 常量2 :語句;break;
case 常量3 :語句;break;
...
case 常量n:語句;break;
default :語句;break;
}
當常量表達式所表達的量與其中一個case語句中的常量相符時,就執行此case語句後面的語句,並依次下去執行後面所有case語句中的語句,除非遇到break;語句跳出switch語句為止。如果常量表達式的量與所有case語句的常量都不相符,就執行default語句中的語句。
遵守switch語句規則
switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則:
只能針對基本數據類型中的整型類型使用switch,這些類型包括int、char等。對於其他類型,則必須使用if語句。
switch()的參數類型不能為實型 。
case標籤必須是常量表達式(constantExpression),如42或者'4'。
case標籤必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。
C語言switch套用例子:
例一:
#include<stdio.h>int main(){    double score;    printf("請輸入分數:\n");    scanf("%lf",&score);    switch((int)(score/10))    {            case 10:            case 9:printf("A(最好)\n");break;            case 8:printf("B(優秀)\n");break;            case 7:printf("C(良好)\n");break;            case 6:printf("D(及格)\n");break;            case 5:        case 4:        case 3:        case 2:        case 1:        case 0:printf("E(不及格)\n");break;        default:printf("Error!\n");    }}
例二:
#include<stdio.h>int main(){    char rank;    printf("請輸入分數等級:(A、B、C、D、E)\n");    scanf("%c",&rank);    switch(rank)    {        case'A':printf("A(90~100)\n");break;        case'B':printf("B(80~89)\n");break;        case'C':printf("C(70~79)\n");break;        case'D':printf("D(60~69)\n");break;        case'E':printf("E(0~59)\n");break;        default:printf("error!\n");break;    }}
例三:
輸入年月日,判斷這一天是這一年的第幾天。
#include<stdio.h>int main(){    int year,month,date,leap,days = 0;    printf("請輸入年份:");    scanf("%d",&year);    printf("請輸入月份:");    scanf("%d",&month);    printf("請輸入日:");    scanf("%d",&date);    leap=(year%4==0&&year%100!=0||year%400==0);    switch(month)    {        case 12:days+=30;        case 11:days+=31;        case 10:days+=30;        case 9:days+=31;        case 8:days+=31;        case 7:days+=30;        case 6:days+=31;        case 5:days+=30;        case 4:days+=31;        case 3:days+=28+leap;        case 2:days+=31;        case 1:days+=date;break;        default:printf("data error");break;    }    printf("%4d年%2d月%2d日是這一年的第%d天。\n",year,month,date,days);    return 0;}
C# Switch語句
在C#中,switch語句的控制表達式只能是某個整形(int,char,long等)或string。其他任何類型(包括float和double類型)只能用if語句。
每個constantExpression值都必須唯一,使controllingExpression只能與它們中的一個匹配。如果controllingExpression的值和任何controllingExpression的值都不匹配,也沒有default標籤,程式就從switch的結束大括弧之後的第一個語句繼續執行。
實例:
switch (current)
{
case '<':
target.Text += "&lt;";
break;
case '>':
target.Text += "&gt;";
break;
case '&':
target.Text += "&amp;";
break;
case '\"':
target.Text += """;
break;
case '\'':
target.Text += "'";
break;
default:
target.Text += current;
break;
JavaScript Switch 語句
如果希望選擇執行若干代碼塊中的一個,你可以使用 switch 語句:
語法:
switch (n)
{ case 1: 執行代碼塊1 break
case 2: 執行代碼塊2 break
default: 如果n即不是1也不是2,則執行此代碼 }
switch (n) { case 1: 執行代碼塊1 break
case 2: 執行代碼塊2 break
default: 如果n即不是1也不是2,則執行此代碼 }
工作原理:switch 後面的 (n) 可以是表達式,也可以(並通常)是變數。然後表達式中的值會與 case 中的數字作比較,如果與某個 case 相匹配,那么其後的代碼就會被執行。break 的作用是防止代碼自動執行到下一行。
實例:
<scripttype="text/javascript">//Youwillreceiveadifferentgreetingbased//onwhatdayitis.NotethatSunday=0,//Monday=1,Tuesday=2,etc.vard=newDate()theDay=d.getDay()switch(theDay){case5:document.write("FinallyFriday")breakcase6:document.write("SuperSaturday")breakcase0:document.write("SleepySunday")breakdefault:document.write("I'mlookingforwardtothisweekend!")}</script>
switch 語句和具有同樣表達式的一系列的 IF 語句相似。很多場合下需要把同一個變數(或表達式)與很多不同的值比較,並根據它等於哪個值來執行不同的代碼。這正是 switch 語句的用途。
注: 注意和其它語言不同,continue 語句作用到 switch 上的作用類似於 break。如果在循環中有一個 switch 並希望 continue 到外層循環中的下一個輪迴,用 continue 2。
PHP Switch 語句
如果您希望有選擇地執行若干代碼塊之一,請使用 Switch 語句。
使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊。
語法
switch (expression)
{
case label1:
code to be executed if expression = label1;
break;
case label2:
code to be executed if expression = label2;
break;
default:
code to be executed
if expression is different
from both label1 and label2;
}
工作原理:
對表達式(通常是變數)進行一次計算
把表達式的值與結構中 case 的值進行比較
如果存在匹配,則執行與 case 關聯的代碼
代碼執行後,break語句阻止代碼跳入下一個 case 中繼續執行
如果沒有 case 為真,則使用 default 語句
下面的例子使用兩種不同方法實現同樣的事,一個用一系列的 if 語句,另一個用 switch 語句:
例子1. switch結構
<?phpif($i==0){echo"iequals0";}elseif($i==1){echo"iequals1";}elseif($i==2){echo"iequals2";}switch($i){case0:echo"iequals0";break;case1:echo"iequals1";break;case2:echo"iequals2";break;}?>
例子2. switch結構可以用字元串
<?phpswitch($i){case"apple":echo"iisapple";break;case"bar":echo"iisbar";break;case"cake":echo"iiscake";break;}?>
為避免錯誤,理解 switch 是怎樣執行的非常重要。switch 語句一行接一行地執行(實際上是語句接語句)。開始時沒有代碼被執行。僅當一個 case 語句中的值和 switch 表達式的值匹配時 php 才開始執行語句,直到 switch 的程式段結束或者遇到第一個 break 語句為止。如果不在 case 的語句段最後寫上 break 的話,php 將繼續執行下一個 case 中的語句段。例如:
<?phpswitch($i){case0:echo"iequals0";case1:echo"iequals1";case2:echo"iequals2";}?>
這裡如果 $i 等於 0,php 將執行所有的 print 語句!如果 $i 等於 1,php 將執行後面兩條 print 語句。只有當 $i 等於 2 時,才會得到“預期”的結果――只顯示“i equals 2”。所以,別忘了 break 語句就很重要(即使在某些情況下故意想避免提供它們時)。
在 switch 語句中條件只求值一次並用來和每個 case 語句比較。在 elseif 語句中條件會再次求值。如果條件比一個簡單的比較要複雜得多或者在一個很多次的循環中,那么用 switch 語句可能會快一些。
在一個 case 中的語句也可以為空,這樣只不過將控制轉移到了下一個 case 中的語句。
<?phpswitch($i){case0:case1:case2:echo"iislessthan3butnotnegative";break;case3:echo"iis3";}?>
一個 case 的特例是 default。它匹配了任何和其它 case 都不匹配的情況,並且應該是最後一條 case 語句。例如:
<?phpswitch($i){case0:echo"iequals0";break;case1:echo"iequals1";break;case2:echo"iequals2";break;default:echo"iisnotequalto0,1or2";}?>
case 表達式可以是任何求值為簡單類型的表達式,即整型或浮點數以及字元串。不能用數組或對象,除非它們被解除引用成為簡單類型。
switch 支持替代語法的流程控制。更多信息見流程控制的替代語法一節。
<?phpswitch($i):case0:echo"iequals0";break;case1:echo"iequals1";break;case2:echo"iequals2";break;default:echo"iisnotequalto0,1or2";endswitch;?>
switch語句注意事項
switch(exprl){
case expr2:
statements;
break;
case expr3:
statements;
break;
default:
statements;
break;
}
switch語句執行時會從上到下根據括弧中表達式的值作比較,當某個case語句中的表達式與此值相同時,就執行這個case語句或語句序列,直到遇到break為止。 break語句是必須有的,它用來結束switch語句的執行。如果所有case語句後面的表達式都不等於switch語句的表達式expr1的值川0執行default後面的默認語句序列。不過,default部分是可選的。如果沒有這一部分,並遇到所有case語句都不匹配,那么,就不作任何處理而進入後續程式段的執行。
可見,一個switch語句可以代替多個if-else語句組成的分支結構,而switch語句從思路上顯得更清晰。
使用switch語句時,要注意expr1必須是符合byte,char,short,int類型的常量表達式,而不能用浮點類型或long類型,//(也不能為一個字元串)。 (jdk7後,允許String)
1 switch(colorNum){
2 case 0:
3 setBackground(colo. red);
4 break;
5 case 1:
6 setBackground(color.green) ;
7 break;
8 default:
9 setBackground(color.black);
10 break;
11 }
switch還有一個用法:
1 switch(colorNum){
2 case 0:
3 case 1:
4 setBackground(color.green) ;
5 break;
6 default:
7 setBackground(color.black);
8 break;
9 }

相關詞條

熱門詞條

聯絡我們