大家好,我是电源漫谈,在C语言代码中,当需要多个if条件去判断时,那么如果使用Switch Case语句来做是一个更为简明的方法。本文简要对switch case这一类型的语句做一个简单的介绍。
一般来说,相比if判断来说,其唯一的缺点是所判断的条件必须要为整数类型,如int或者char等,而if判断可以使用任何表达式作为条件判断。
图1 switch case的语句结构
基本运行原理是,当switch中的表达式和任何一个case分支中的表达式const-expr相符时,相应case中的语句statement会执行。
图2 基本的switch case语句结构流程图
注意以上流程图中,当一个case分支语句执行后,它会自然流向下一个case语句,这样依次执行完所有的case语句,这往往是不符合实际需要的,所以我们会在每一个case分支中增加break语句来避免。
图3 改进的switch case语句结构流程图
当在每一个case分支中增加了break语句后,则仅仅会执行某一个和switch条件匹配的case分支的语句,这是符合实际要求的一种形式,执行完符合要求的case分支语句,程序就会到达switch case语句的结尾。
接下来我们举例说明这个语法结构。事先定义如下变量,int channel=0;
图4 在主程序中重复执行switch case语句
图5 无break语句时程序执行结果
从上述运行结果来看,由于channel为0,所以它会执行case 0对应的语句,之后顺序执行所有的case语句,并且在while(1)中循环执行。
图6 有break语句时的switch case语句
图7 有break语句时的switch case语句执行结果
由于channel为0,所以执行case 0语句,之后经过break语句后,达到switch case程序的结尾结束。
以上,简要说明了switch case语句的执行,其它情况此处不做说明。