前言
在C语言中 Switch 语句是很常用的一个语句,他是一种多路分支语句,它允许一个变量的值对多个代码块进行选择执行。经常被用来进行状态判断,使用状态机的方式来使问题简单化,下面一起看看它的使用。
基本用法
我们从最简单的用一步一步的开始讲解
基本格式
注意;case 后必须是常量表达式,不能是变量或计算结果,后为‘:’不是‘;。
Switch语句的基本格式就是这样,switch
语句后面跟一个整数表达式(在某些编译器中也可以是非整型的,比如枚举类型,但会被隐式转换为整数),然后是一系列的case
标签,每个case
后面跟一个常量表达式或常数,表示switch
表达式可能的值。当switch
表达式的值等于某个case
标签的值时,程序将从这个case
开始执行,比如flag=1;他就会从case 1:开始执行,执行完case 1:在执行case 2:顺着一直往下执行,直到所有的执行完毕。
但这样肯定不满足我们的一些需求,如果,我只想它执行case 1:怎么办,可以在case执行程序结尾处加上break;告诉它执行到这里就够了,退出Switch语句。
break;跳出
只执行一个case标签;
注意;break为跳出当前循化,只跳出一层;
那么如果我所有的case标签都没有被执行,这种情况怎么办呢?
default语句;
在Switch语句的最后处加上default:当所有case标签没有被执行时,他会自动执行default中的内容,这种方法也常常被用来进行程序错误反馈。
上面就是Switch的基本用法了,当然如果你在配合if语句进行使用,就可以做成一个状态机检测啦。
状态机检测示例
我们以一个烧开水倒水喝的过程来举例子吧。
我们可以把这个过程拆分一下,水烧开->倒水->水凉喝水。
这就是一个简单的状态机判断,合理的运用标记位,标记状态,Switch与if判断状态进行,可以将复杂问题简单化,方便我们将实际问题用程序表示出来,以做出我们想要的产品