
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 += "<";
break;
case '>':
target.Text += ">";
break;
case '&':
target.Text += "&";
break;
case '\"':
target.Text += """;
break;
case '\'':
target.Text += "'";
break;
default:
target.Text += current;
break;
{
case '<':
target.Text += "<";
break;
case '>':
target.Text += ">";
break;
case '&':
target.Text += "&";
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;
}
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)
可见,一个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 }
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 }
1 switch(colorNum){
2 case 0:
3 case 1:
4 setBackground(color.green) ;
5 break;
6 default:
7 setBackground(color.black);
8 break;
9 }
转载请注明出处海之美文 » switch(计算机语言关键字)