C语言的switch语句,switch语法结构c语言

  C语言的switch语句,switch语法结构c语言

  c语言提供了多分支选择的switch语句。它的一般形式是:

  Switch (expression) {case常量表达式1:语句1;打破;Case常量表达式2:语句2;打破;case常量表达式n:语句n;打破;默认:语句;打破;}

  意思是:对一个表达式求值。并逐一比较以下常数表达式的值。当表达式的值等于一个常量表达式的值时,将执行下面的语句,然后继续执行case之后的所有语句,不做任何判断。如果表达式的值不同于case后的所有常量表达式,将执行default后的语句。处理流程图如下:

  使用switch语句的规则是:

  1.switch语句的判断条件可以接受int、byte、char、short、enumeration,但不能接受其他类型。

  2.case后的常量表达式的值不能相同,否则会出错。

  3.case之后允许多条语句,不需要用{}括起来。

  4.可以更改每个case和default子句的顺序,而不会影响程序的执行结果。

  5.默认情况下,如果没有匹配的案例,则执行它。默认是不必要的。

  6.如果没有break语句:首先,将在所有case语句中搜索符合条件的语句。如果找到,每条语句将从语句顺序往下执行;如果找不到,就从第一段开始,然后按降序执行每段语句。

  7.如果有break语句:找到满足条件的case语句并执行。否则,将执行默认语句。

  例如,下面的例子:

  # include stdio . h int main(void){ inta;Printf(请输入一个整数:\ n );scanf(%d ,switch(a){ case 1:printf( Monday \ n );案例2:printf( Tuesday \ n );case3: printf(星期三\ n );case4: printf(星期四\ n );case 5:printf( Friday \ n );case6: printf(星期六\ n );case 7:printf( Sunday \ n );默认值:printf(输入错误\ n );}系统(暂停);return0}

  运行结果:

  这个程序需要输入一个数字和输出一个英文单词。但输入3后,执行case3及所有后续语句,输出星期三及后续所有单词。当然,这是不可取的。为什么会这样?这正好反映了switch语句的一个特点。在switch语句中,“case常量表达式”只相当于一个语句标签。当表达式的值等于一个标签时,将在该标签处执行,但在标签语句执行后不能自动跳出整个switch语句,所以看起来后续所有case语句都将继续执行。这和前面介绍的if语句完全不同,要特别注意。

  为了避免上述情况,我们需要使用break语句,专门用于跳出switch语句。break语句只有关键字break,没有参数。后面会详细描述。修改示例的程序,在每个case语句后添加一个break语句,这样就可以在每次执行后跳出switch语句,从而避免输出不必要的结果。

  修改后的代码:

  # include stdio . h int main(void){ inta;Printf(请输入一个整数:\ n );scanf(%d ,switch(a){ case 1:printf( Monday \ n );打破;案例2:printf( Tuesday \ n );打破;case3: printf(星期三\ n );打破;case4: printf(星期四\ n );打破;case 5:printf( Friday \ n );打破;case6: printf(星期六\ n );打破;case 7:printf( Sunday \ n );打破;默认值:printf(输入错误\ n );}系统(暂停);return0}

  执行结果:

  可以看到运行结果正常。

  switch语句不是必不可少的,显然可以用一组if来代替.否则如果.否则如果.else,但是一方面,使用switch语句会让代码更清晰;另一方面,有时编译器会整体优化switch语句,使其比等价的if/else语句生成的目标代码更高效。

  使用switch语句时,请注意以下几点:

  1.case后面必须跟一个常量表达式,因为这个值必须在编译时计算。

  2.在C语言中,浮点型无法准确比较等式和不等式。所以C语言规定跟在case后面的常量表达式的值必须是可以精确比较的整数或字符类型。

  3.进入case后,如果没有遇到break语句,就会一直执行下去,case或者default下面的其他语句也会执行下去,直到遇到break或者整个switch语句块的结尾。通常,每个case后面都有一个break语句,但有时这个特性会被故意利用而不中断。

  下面是使用switch语句的三种情况。

  1.标准类型(case后跟break语句)

  # include stdio . h int main(void){ inti=3;开关(i) { case1: printf(%d\n ,1);打破;情况2: printf(%d\n ,2);打破;情况3: printf(%d\n ,3);打破;默认值:printf(%s\n , default );打破;}系统(暂停);return0}

  运行结果:

  2.特殊类型1(没有完整的break语句,可以完成一些特殊应用)

  # include stdio . h int main(void){ int year=2014;int month=6;intdayswitch(月){案例1:案例3:案例5:案例7:案例8:案例10:案例12:日=31;打破;情况2:天=28;打破;情况4:情况6:情况9:情况11:天=30;打破;} printf(%d\n ,天);系统(“暂停”);return0}

  运行结果:

  3.特殊类型2(默认位置)

  # include stdio . h int main(void){ inti=1;开关(i) { case1: printf(%d\n ,1);默认值:printf(%s\n , default );情况2: printf(%d\n ,2);打破;情况3: printf(%d\n ,3);打破;}系统(暂停);return0}

  运行结果:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: