C语言基础

    返回首页    发表留言
本文作者:李德强
          第三节 switch语句
 
 

        switch语句可以算是if else语句的一种特殊情况。当我们使用if else语句来做判断时,如果我们只想对条件表达式的结果做一些特定值的判断,那么就可以使用switch语句。例如:我们需要根据当前月份来判断这个月份应该有多少天,我们可以使用if else语句来处理这个问题,但同样也可以使用switch语句来处理。switch语句的使用方式如下:
 

switch (变量或表达式)
{
	case 值1:
	{
		//处理内容
		break;
	}
	case 值2:
	{
		//处理内容
		break;
	}
	default
	{
		//处理内容
		break;
	}
}

        switch右侧的小括号中的变量或表达的值的结果是一个确定的值。大括号中可以有多个case语句,case右侧的值如果等于switch右侧小括号中的值,那么程序将执行当前case大括号下的内容(case下的大括号可以省略,但建议保留),在大括号中的最后一行需要加入break语句,表示执行完当前条件分支的case之后程序跳出当前switch结构,如果没有break则程序会顺序执行下面的case语句代码,即使case后的值不等于switch的条件值。如果switch中所有的case值都不等于switch的条件值,那么程序将执行default后的大括号中的内容,default分支即为默认条件分支,也就是说当所有的case分支都没有起作用时程序将执行此默认分支,(default分支可以省略,但建议保留)。例如:

int month = 11;
int day;
switch (month)
{
	case 0:		//一月
	{
		day = 31;
		break;
	}
	case 1:		//二月
	{
		day = 28;
		break;
	}
	case 2:		//三月
	{
		day = 31;
		break;
	}
	case 3:		//四月
	{
		day = 30;
		break;
	}		
	//5月到11月略		
	case 11:		//十二月
	{
		day = 31;
		break;
	}
	default:	//其它情况
	{
		day = 0;
		break;
	}
}

        上面程序执行的过程为:switch (month)中的条件表达式的值为11,也就是十二月(月分从0开始),程序会将这个值与所有的case条件值做比较。第一个case的条件值为0,11与0相比较的结果为假,则程序跳过此case分支;第二个case的条件值为1,11与0想比较结果为假,则程序跳过此case分支;依次比较,当case 11: {  } 这个条件值为11,11与11相比较的结果为真,于是程序进入此case分支,执行day = 0;语句。注意,当执行完这个语句之后,程序需要通过break跳出当前switch结构,如果不使用break语句,程序在执行完day = 31之后,就会继续向下执行下一个分支,即使其条件不符合。也就是说,如果不用break跳出,程序在执行完day = 31后,还会继续向下执行day = 0;于是程序的运行结果就出现了错误。

        通过上面例子我们可以看到swtich与if else语法的书写方式不同,但功能很类似,只不过switch中的case值是固定的常量,而if 后的条件值可以是一个变量或条件表达式,所以说if else结构在使用范围上比switch更广,但switch结构的语法更清晰,它适用于一些特定的情况,在一些固定值的条件判断中使用switch更加方便美观一些。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号