记得看一段windows上的代码时遇到过这样的情况:在switch语句中得所有case之前加入了一个if语句的判断,当时很奇怪为什么在任何条件下都没有执行,后来才明白是自己理解错了switch的语法。

switch语句的语法如下:

语法会对expression进行case上的匹配,匹配成功则直接执行对应case中的语句,并不会流程般的执行其上或下得语句。

列举一个实例:

执行情况如下:

可以看到,case之上的语句虽然在所有的case之前,但是switch匹配后并没有执行printf语句。