2.5 swich语句
当程序中有多个分支时,可以使用 if 嵌套实现,但是当分支较多时,则嵌套的if 语层
数多,程序冗长而且可读性降低。C 语言提供了switch 语句直接处理多分支选择。Switch
的一般形式如下:
switch(表达式)
{case 常量表达式1:语句1
case 常量表达式2:语句2
……
case 常量表达式n:语句n
default:语句n+1
}
说明:switch 后面括号内的“表达式”,ANSI 标准允许它为任何类型;当表达式的值与
某一个case 后面的常量表达式相等时,就执行此case 后面的语句,若所有的case 中的常量
表达式的值都没有与表达式值匹配的,就执行default 后面的语句;每一个case 的常量表达
式的值必须不相同;各个case 和default 的出现次序不影响执行结果。
另外特别需要说明的是,执行完一个 case 后面的语句后,并不会自动跳出switch,转
而去执行其后面的语句,如上述例子中如果这么写
switch (KValue)
{ case 0xfb: Start=1;
case 0xf7: Start=0;
case 0xef: UpDown=1;
case 0xdf: UpDown=0;
}
if(Start)
{ ……}
假如KValue 的值是0xfb,则在转到此处执行“Start=1;”后,并不是转去执行switch 语
句下面的if 语句,而是将从这一行开始,依次执行下面的语句即“Start=0;”、“UpDown=1;”
“UpDown=0;”,显然,这样不能满足要求,因此,通常在每一段case 的结束加入“break;”
语句,使流程序退出switch 结构,即终止switch 语句的执行。
数多,程序冗长而且可读性降低。C 语言提供了switch 语句直接处理多分支选择。Switch
的一般形式如下:
switch(表达式)
{case 常量表达式1:语句1
case 常量表达式2:语句2
……
case 常量表达式n:语句n
default:语句n+1
}
说明:switch 后面括号内的“表达式”,ANSI 标准允许它为任何类型;当表达式的值与
某一个case 后面的常量表达式相等时,就执行此case 后面的语句,若所有的case 中的常量
表达式的值都没有与表达式值匹配的,就执行default 后面的语句;每一个case 的常量表达
式的值必须不相同;各个case 和default 的出现次序不影响执行结果。
另外特别需要说明的是,执行完一个 case 后面的语句后,并不会自动跳出switch,转
而去执行其后面的语句,如上述例子中如果这么写
switch (KValue)
{ case 0xfb: Start=1;
case 0xf7: Start=0;
case 0xef: UpDown=1;
case 0xdf: UpDown=0;
}
if(Start)
{ ……}
假如KValue 的值是0xfb,则在转到此处执行“Start=1;”后,并不是转去执行switch 语
句下面的if 语句,而是将从这一行开始,依次执行下面的语句即“Start=0;”、“UpDown=1;”
“UpDown=0;”,显然,这样不能满足要求,因此,通常在每一段case 的结束加入“break;”
语句,使流程序退出switch 结构,即终止switch 语句的执行。