c语⾔switch语句最⼤嵌套数,浅谈C语⾔中switch语句的嵌套使
⽤
浅谈C语⾔中switch 语句的嵌套使⽤
作者:未知
【摘要】switch语句是⼀种分⽀控制语句,它的应⽤在程序设计中起⾄了很重要的作⽤。由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套使⽤最是使初学者难以理解。本⽂通过介绍switch嵌套语句的⽅式、的作⽤,以及探讨⼀个实例,以期初学者在这⽅⾯有更好的了解跟掌握。
【关键词】C语⾔;switch语句;嵌套
C语⾔中,if-else语句可实现多分⽀结构的程序设计,但是即使分⽀众多,则嵌套的if⼦句层就越多,由此编写的程序不够直观,难以理解,给编程和阅读带来了巨⼤的困难。然⽽,C语⾔中还提供了此外⼀种分⽀控制语句,那就是switch语句,⼜称开关语句。switch语句的应⽤给编程者带来了不少便利,但既因为它格式复杂(C语⾔中更复杂的)[1],对于有些初学者来说,很难理解把握,更不⽤说switch语句的嵌套使
⽤了。为了使初学者能更全⾯的知道掌握switch语句的使⽤,现就对switch语句中嵌套使⽤switch语句浅谈如下:
⼀、switch嵌套语句的通常⽅式:
switch(表达式)
{undefined
case 常量1: 语句1
case 常量2: switch(表达式)
{ case 常量1: 语句1
case 常量2: 语句2
……
case 常量n: 语句n
default :语句n+1
}
……
case 常量n: 语句n
default :语句n+1
}
⾸先推导switch后⾯括号中表达式的值,然后⽤此值依次与各个case的常量表达式⽐较:若圆括号中表达式的值与某个case后⾯的常量表达式的值相同,就执⾏此case后⾯的句⼦;若圆括号中表达式的值与所有case后⾯的常量表达式都不等,则执⾏default后⾯的短语n+1。若执⾏的case后⾯是嵌套的switch语句时,同样应先计算该嵌套switch后⾯括号内的值,与case的常量表达式⽐较。实际上跟执⾏⼀个新的switch语句⼀样。
⼆、 break语句是switch嵌套语句的关键。
case常量起的是句⼦标号的作⽤,程序并不在此进⾏判定。因此,⼀旦与switch后⾯括号中表达式的值相同,就⾃此标号处起初执⾏,⽽且执⾏完⼀个case后⾯的段落后,若没碰到break语句,就⾃动开启下⼀个case继续执⾏,⽽不再判断是否与之相同,直到遇见break语句才中⽌执⾏。所以说,若想执⾏⼀个case分以后⽴刻跳出switch语句,特别是跳出嵌套的switch语句,就需要在相应的分⽀最后添加⼀个break语句。在这⾥要提出break语句跳出的是当前执⾏的switch语句。
三、 switch语句嵌套使⽤的简洁实例
程序⽰例:
#include"stdio.h"
void main()
{undefined
int a=3,b=9,c=6;
switch(a>0) // 因为a=3>0,判断是真得1(逻辑真为1,假为0),继续执⾏
{case 1:switch(b {case 1:printf("@");break;//输出“@”,遇到break跳出该层switch,继续执⾏
case 0:printf("!");break;
}
case 0:switch(c==6) //因为c=6,判断为真得1,继续执⾏
{case 0:printf("*");break;
case 1:printf("#");break; //输出“#”遇到break将跳出该层switch,继续执⾏
default:printf("%%");break;
}
default:printf("&"); //由于这时default在内层switch外不受影响,继续执⾏输出“&”
}
printf("\n");//输出回车
}
输出结果,见图1
图1 程序执⾏结果
四、结束语
本⽂介绍了switch语句中嵌套使⽤switch语句c语⾔switch 语句,其实switch语句中还可以嵌套for等词语,有兴趣的读者可以⾃⼰撰写相应程序,并在visual C++上运⾏。在C语⾔中,对于分⽀数众多且易于表⽰成switch形式的状况,最好使⽤switch语句[2],它的可读性、可理解性都应⽐if嵌套好得多,特
别是switch的嵌套使⽤在程序设计中有时更显优势。
参考⽂献
[1] 王凤英.C语⾔的switch辨析[J],计算机教与学,2001年,第1期:39-40.
switch的用法c语言[2] 宋雅娟.深⼊探讨C语⾔中多分⽀结构的性能[J],长春⼤学学报,2007年,第10M期:66-69.
[3] 杨路明.C语⾔程序设计[M],北京:北京邮电⼤学出版社c语⾔switch 语句,2005,51-53
本⽂来⾃电脑杂谈,转载请注明本⽂⽹址:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论