4.1.6 开关语句

开关语句由关键字switch和case来标识,主要用于多个分支语句处理的情况。开关语句的一般形式如下所示。


switch(表达式)

{

case常量表达式1:

分支语句1;

break;

case常量表达式2:

分支语句2;

break;

case常量表达式3:

分支语句3;

break;

case常量表达式n:

分支语句n;

break;

default:

分支语句n+1;

}


开关语句在执行时,首先计算switch后的表达式的值,然后与case后面的各个分支常量表达式的值相比较,如果相等时则执行对应的分支语句,再执行break语句跳出switch语句。如果分支常量的值没有一个和条件相等,就执行关键字default后的语句。switch的开关语句的程序示例如下。


include<stdio.h>//头文件

void main()//主函数

{

char ch;

ch=getchar();//从键盘接受字符赋值给ch

switch(ch)//开关语句

{

case‘A'://如果为'A’

printf(“按键A按下”);

break;

case‘B'://如果为'B’

printf(“按键B按下”);

break;

default://否则输出这里

printf(“非按键A和B按下”);

break;

}

}


该程序可以在KeilµVision3编译环境中执行,如果键盘输入“A”,其运行的结果如下所示。


按键A按下


本例中,首先声明字符型变量ch,然后从键盘接受字符并赋值给ch。此时,在使用switch开关语句进行判断时,如果键入字符为A,则执行第一个case分支语句;如果键入字符为B,则执行第二个case分支语句。如果键入字符既非A也非B,则执行default分支语句。

使用switch开关语句时,需要注意以下几点。

❑switch中的变量可以是整型变量,也可以是字符型变量。这样便于进行值的比较。

❑每个分支语句后必须有break语句,否则将不能跳出开关语句,而将继续执行其他分支。

❑case和default后的分支语句可以是多个语句构成的语句体,但是不需要使用“{}”括起来。

❑当没有符合的条件时,可以不执行任何语句,即可以省略default语句,而直接跳出该开关语句。

❑虽然开关语句可以实现相同功能的多分支if条件语句,但使用swith开关语句将使结构更加清晰明了。

注意case后的各常量表达式的值不能相同,否则程序在编译时会出现错误。