在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 1437|回复: 0

[资料] switch语句

[复制链接]
发表于 2016-4-12 16:09:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

我们已见过,当要选择多个中的一个时,可以使用if语句来控制其选择。但是,随着可选项数量的增加,这种程序的复杂性将快速增长。程序将变得难以阅读和理解。有时,即使是设计人员自己也会迷惑。幸运的是,C语言具有一个内置的名为swich的多路判断语句。switch语句吧给定变量的值与case的值进行比较,如果发现有一个匹配,那么就运行该case相关的语句块。switch语句的一般形式为:

switch(expression)

{

       casevalue-1:

               block-1;

               break;

       casevalue-2:

               block-2;

               break;   

       default:

               default-block;

               break;           

}

statement-x;

expression是一个整数表达式或字符。value-1value-2为常量或常量表达式,称为case标签。在switch语句内这些值应是唯一的。block-1.block-2为语句列表,可含有零个或多个语句。这些语句块不必用括号括起来。注意,case标签是以冒号结尾的。

当运行switch语句时,expression的值与value-1value-2的值进行比较,如果发现了某个case的值与expression的值匹配,就运行该case后面的语句块。

每个语句块的末尾为break语句。它标志着该case的结尾,并使控制权从该switch语句中退出来,转移到switch后面的statement-x

Default是一个可选项。当它出现时表示,如果expression的值与所有case值都不匹配,那么就运行default后面的语句。如果没有它,那么当多有匹配都失效时,不进行任何动作,而是把控制权转交给switch后面的statement-x语句。

switch语句的选择过程如图的流程图所示。

file:///C:/Users/xin.jin/AppData/Local/Temp/msohtml1/01/clip_image002.gif

下面用switch语句来写一个给学生评级的示例程序,可以用switch语句来改写。具体如下:

......

index =marks/10;

switch(index)

{

       case10:

       case9:

       case8:

              grade="Honours";

              break;

       case7;

       case6;

              grade="FirstDivision";

              break;

       case5;

              grade="SecondDivision";

              break;

       case4;

              grade="ThirdDivision";

              break;

       default;

              grade="Fail";

              break;            

}

printf("%s\n",grade);

......

注意,我们这里使用了一个转换语句:

index =marks/10

其中,变量index被定义为整数。它具有如下的整数值。

marks                                                                     index

100
10

90~99                                       9

80~89                                       8

…                                                                         …

0
                                         0

程序的代码段说明了两个重要特性。首先,它使用了空的case语句。头三个case都运行相同的语句:

grade ="Honours";

break;

case7case6也是如此。第二,缺省条件用于所有得分小于40的情况。

switch语句经常用于菜单选择。例如:

......

printf("TRAVEL GUIDE\n\n");

printf("A Air Timings\n");

printf("T Train Timings\n");

printf("X To skip\n");

printf("\n Enter you choice\n");

character=getchar();

switch(character)

{

       case'A':

              air-display();

              break;

       case'B':

              bus-display();

              break;

       case'T':

              train-display();

              break;

       default:

              printf("Nochoice\n");           

}

......

也可以嵌套switch语句。也就是说,一个switch语句可以是某个case语句的一部分。

switch语句的使用规则

switch表达式必须是整型的。

case标签必须是常量或常量表达式。

case标签必须是唯一的。不允许两个标签具有相同的值。

case标签必须以冒号结尾。

break语句把控制权转出switch语句。

default标签是可选的。如果有,当表达式找不到一个相匹配的case标签时,将运行default语句。

最多只能由一个default标签。

default可以房子任意位置,但通常放在末尾。

switch语句允许嵌套。

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-10 12:47 , Processed in 0.016043 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表