摘要:switch-case-default总是一起出现,共同构成switch开关语句。
switch
switch语句的一般形式为:
switch(表达式){
case 常量表达式1: 语句1; break;//break不是必须的
case 常量表达式2: 语句2; break;
…
case 常量表达式n: 语句n; break;
default: 语句n+1;//default也不是必须的
}
当执行switch语句时,程序会先计算表达式的值,再逐个和case 后的常量表达式比较。若不等则继续往下比较,若一直不等,则执行default后的语句;若等于某一个常量表达式,则从这个表达式后的语句开始执行,并执行后面所有case后的语句。
与if语句的不同:If语句中若判断为真则只执行这个判断后的语句,执行完就跳出if语句,不会执行其他if语句;而switch语句不会在执行判断为真后的语句之后跳出循环,而是继续执行后面所有case语句。所以建议在每一case语句之后增加break 语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。
补充:
- case后的常量表达式不能相同。
- case后的语句可以有多个且不用花括号括起来。
- case和default子句的先后顺序可以先后变动,default子句可以省略不用。
- switch语句中使用的表达式必须具是int或enum类型,否则如float等其他数据类型是无法通过的编译的,因为编译器需要switch后面的语句和case后面的值精确匹配,而计算机无法精确表达一个float数据类型。
- switch可以任意个case语句(包括没有)。
参考链接
https://blog.youkuaiyun.com/Cheatscat/article/details/79508906
https://github.com/shellhub/blog/issues/41
https://blog.youkuaiyun.com/SqrsCbrOnly1/article/details/91363042
https://blog.youkuaiyun.com/ccMaa/article/details/51000422
https://blog.youkuaiyun.com/weixin_42955598/article/details/90717706switch语句实现原理参考以下两个链接
https://www.cnblogs.com/mukekeheart/p/10558167.html
https://blog.youkuaiyun.com/hixiaogui/article/details/79785920