
显示输入的整数除以3所得余数的程序如代码清单 demo1.c 所示。
代码清单 demo1.c

本程序中使用了两次计算no除以3的余数的表达式no%3,多次输入同一个表达式,容易造成输入错误。不仅如此,同一个除法执行两次也会使程序略显冗长。
使用switch语句修改后的程序如代码清单 demo2.c 所示。
代码清单 demo2.c

像“case 1:”这样用来表示程序跳转的标识称为标签(label)。
标签的值必须为常量,不可为变量。另外,不允许多个标签同为一个值。程序跳到该标签后,会按顺序执行其后的语句,因此画面中会显示“该数除以3的余数是1。”。
当程序执行到 break语句(break statement) 时,switch语句执行结束。
break有“打破”“脱离”之意。执行break语句之后,程序就会跳出将它围起来的switch语句。
复杂的switch语句
代码清单 demo3.c 中的switch语句比较复杂。下面我们就以该程序为例,来加深对switch语句中的标签和break语句的动作的理解。
代码清单 demo3.c

- 有些 case 语句没有写 break,如果此时检查到条件满足该 case,程序执行完该 case 的语句,会继续执行下一个case的语句,直到遇到 break。
- 当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到 default: 继续执行。
► 如果改变本程序switch语句中标签的顺序,程序的执行结果也会发生改变.所以在使用switch语句的时候,一定要正确书写标签的顺序。