随时转向的命运列车

有时候当你在写条件逻辑时,需要一次又一次地检查同一个变量的值。为了避免写许许多多的if语句,C语言提供了另一种选择:switch语句。

switch语句和if语句有些像,但它可以测试一个变量的多种取值:

随时转向的命运列车 - 图1

当计算机遇到switch语句,它会检查给出的值,然后寻找匹配的case。找到后,它会运行case之后的所有代码直到遇到break语句。计算机会一直运行下去直到有人吩咐它退出switch语句。

随时转向的命运列车 - 图2

漏掉break会让代码出错。

大部分C程序在每个case段的末尾都有一条break语句,这样做虽然会有失效率,但可以提高代码的可读性。

 

随时转向的命运列车 - 图3磨笔上阵

让我们再看一下cards程序中的那段代码:

随时转向的命运列车 - 图4

 

随时转向的命运列车 - 图5磨笔上阵解答

请用switch语句重写代码。

随时转向的命运列车 - 图6

 

随时转向的命运列车 - 图7要点

  • switch语句可以取代一连串的if语句。

  • switch语句检查一个单独的值。

  • 计算机会在第一个匹配的case语句处开始执行代码。

  • 在遇到break或到达switch语句的末尾前,代码会一直运行。

  • 核对是否把break放对了地方,否则switch语句就会出错。

 

这里没有蠢问题

问:为什么我要用switch语句取代if

:当需要多次检查同一变量时,使用switch语句会更方便。

问:使用switch语句有什么好处?

:有这几个好处。第一,让代码更清晰,一段代码处理一个变量的结构,结构一目了然,相反,一连串的 if 语句就没那么清晰了;第二,可以用下落逻辑在不同的分支之间复用代码。

问:switch语句只能检查变量吗?它能检查值吗?

:能,switch语句仅仅检查两个值是否相等。

问:我能在switch语句中检查字符串吗?

:不能用switch语句检查字符串或任何形式的数组,switch语句只能检查值。