C语言switch结构
| 分类: 教育教学 |
switch语句
当用某个变量或表达式单独测试每一个可能的整常量时,使用switch开关语句处理多分支选择结构,可以简化程序的结构。
语句格式: switch (表达式)
其中:switch、case、default均为C的关键字;表达式必须基于同一个整型变量,用以控制程序的执行过程;常量标号i(i=1,2,…,n),其类型应与表达式类型相同,根据表达式计算结果,在常量标号中查找,标号具有唯一性;语句序列允许由一条语句或多条语句组成,但不需要复合语句形式;break作为中断语句,在完成case分支规定的操作后直接跳出switch结构;default用于处理switch结构的条件非正常操作。switch执行过程如图4所示。
switch语句的执行过程:
Step1:计算表达式的值。
Step2:将计算结果值依次与每一个case的常量标号进行比较。如果与某个case标号相等,执行该case标号后的语句序列;语句序列中如有break语句,则退出switch结构,整个switch多分支选择结构处理结束。如果没有break语句,则无条件执行下一条case语句(此时不需要对下一个case标号进行判断);
Step3:如果没有找到与计算结果值匹配的标号,则检查是否存在default标号,若有,则执行default后的语句,并结束switch语句的执行。若没有,则直接结束switch语句的执行。
菜单结构
#include "stdio.h"
#include "stolib.h"
{
system (pause) ;
return 0 ;
}
switch结构
#include "stdio.h"
#include "stolib.h"
{
switch ( order
)
{
case 1 :
case 2 :
case 3 :
case 4 :
default :
}
system (pause) ;
return 0 ;
}
执行过程:
发现有匹配的值,就进入标签执行。
没有发现有匹配的值,就进入缺省执行。
switch ( order
)
{
case 1 :
case 2 :
匹配1
屏幕上会显示:
添加一个学生
删除一个学生
switch ( order
)
{
case 1 :
case 2 :
匹配2
屏幕上会显示:
删除一个学生
而不会显示:
添加一个学生
因为指令从匹配2 开始,不管指令1有没有 break,不管指令1
写些什么内容,它都会略过指令1 。
int order =
2
;
switch ( order
)
{
case 1 :
case 2 :
case 3 :
case 4 :
default :
如果标签都没有break,则:当
匹配2时
屏幕上会显示:
删除一个学生
浏览学生信息
退出系统
系统无该指令
而不会显示:
添加一个学生
因为指令从匹配2 开始,不管指令1有没有 break,不管指令1
写些什么内容,它都会略过指令1 。
在循环结构中,如果碰到switch结构的break时,break是跳出switch。而不是跳出循环。
switch结构中的 order
必需是一个整形表达式,也就是说其结果必需是一个整数。不能是浮点型。
而else if 可以是浮点数。
switch ( order > 1
&& order <
5 )
{
case 1 :
case 2 :
case 3 :
case 4 :
default :
屏幕上只会显示:
添加一个学生
order > 1 &&
order <
5
因此执行标签1 的指令。
传递一个具体的值 用
switch
表示一个范围的值 用
if
case 1 必需是整形常量表达式
case 2 + 3
,不能是 a + 3
浮点型 不能 表示
相等,因为浮点型不是一个精确的值
case 后要有空格 要加冒号。
当case 包含很多 代码时 要加上花括号。
case 1 :
如果switch当标签重复时,就会报错
如果if else 当标签重复时,允许条件都一样
drfault 可以不写
总之:
if else 适合用于
复杂条件,浮点数比较,复合表达式(与或非),用switch就不方便。
灵活性
有无break,switch执行更灵活多变。
用switch 表示范围
int order =
63
;
switch ( order
)
{
}
1、switch语法
Switch(char/int){
2、switch的注意点
01.小括号中表达式只能取两种类型:int、char
02.case分支的值不能相同
03.case和break必须成对出现
例如:
3、switch语句的执行步骤
1*计算switch后面的表达式的值
2*将计算结果从上至下一次与case后的常量值比较
3*如果相等就执行该常量后的代码块,遇到break语句就结束
4*如果与任何一个case后的常量值都不匹配,就执行default中的语句
4、switch与if的异同
前一篇:C语言成绩评级
后一篇:C语言goto 结构

加载中…