C 语言 switch 语句的要点与注意事项总结

C 语言的switch语句用于根据表达式的值进行多路分支选择。以下是switch语句的要点与注意事项:

要点:

  1. 基本语法

    1 switch (expression) {  
    2     case constant1:    // 代码块1       
    3         break;  
    4     case constant2:    // 代码块2
    5         break;  
    6     ...  
    7     default:           // 默认代码块
    8         break;
    9 }
  1. expression:是switch语句的条件表达式,其值会与case后面的常量进行比较。这个表达式的类型通常是整型或字符型。
  2. case:后面跟的是要与expression的值进行比较的常量。如果expression的值与某个case后面的常量相等,那么会执行该case下的代码块。
  3. break:在每个case的代码块后面,通常会有一个break语句。这是为了防止代码执行完一个case后继续执行下一个case的代码,即“贯穿”(fall-through)现象。当break语句被执行时,程序会跳出switch语句,继续执行switch后面的代码。
  4. defaultdefault是可选的,用于处理expression的值与所有case常量都不匹配的情况。如果没有default子句,且没有任何caseexpression的值匹配,那么switch语句内不会有任何操作被执行,建议每个switch语句都配有一个default分枝

注意事项:

  1. 类型匹配switch语句的表达式和case标签的类型必须是整型或字符型。不能是浮点型、字符串或其他复杂类型。
  2. break 的重要性:如前所述,为了防止“贯穿”现象,每个case后面通常应该有break语句。但如果你确实想要利用“贯穿”来实现某些逻辑,也可以故意省略break
  3. default 的位置default子句可以放在switch语句的任何位置,但通常放在最后,作为一种“如果上述所有情况都不匹配”的处理方式。
  4. 常量表达式case后面跟的必须是常量表达式,不能是变量或运行时才能确定的表达式。
  5. 效率考虑:虽然switch语句在语法上看起来比多个if-else语句更简洁,但在某些编译器或平台上,switch语句可能并不总是比if-else链更高效。编译器会根据具体情况进行优化。
  6. 代码可读性:当处理多个离散的、已知的值时,使用switch语句通常比使用多个if-else语句更易于阅读和维护。
  7. 避免使用魔法数字:在case子句中,尽量避免直接使用数字字面量,而是使用具有明确意义的常量或枚举值,以提高代码的可读性和可维护性。

 更进一步地,可参见如下详细介绍:

  1. case 标签的值不可超出 switch 条件的范围
  2. switch 语句中任何子句都应从属于某个 case 或 default 分枝
  3. case 和 default 标签应直接从属于 switch 语句
  4. 不应存在紧邻 default 标签的空 case 标签
  5. 不应存在内容完全相同的 case 分枝
  6. switch 语句的条件不应为 bool 型
  7. switch 语句不应只包含 default 标签
  8. switch 语句不应只包含一个 case 标签
  9. switch 语句分枝数量应在规定范围之内
  10. switch 语句应配有 default 分枝
  11. switch 语句的每个非空分枝都应该用无条件的 break 或 return 语句终止
  12. switch 语句应该用大括号括起来
  13. switch 语句不应嵌套

 

posted @ 2024-06-03 09:21  幸运泡泡  阅读(20)  评论(0编辑  收藏  举报