当前位置:福建科技生活 >> 智能 >> 文章正文

关于C语言Switch语句,先学这些技巧够不够?

发布于:2020-10-24 被浏览:2849次
  开关在交流语言中的用法
  1.开关后括号中的[表达式],ANSI标准允许为任意类型;
  2.当表达式的值等于案例后面的常量表达公式的值时,执行案例后面的语句;否则,执行默认值后面的语句。
  函数:switch语句是一个多分支选择语句。用于实现多分支选择结构。if语句只有两个分支可供选择,但在实际问题中经常使用多分支选择。比如学生成绩分类(90分是‘A’,80-89分是‘B’,70-90分是‘C’,等等.)。当然这些都是有很多层嵌套的if语句,程序长,可读性降低。c语言提供开关语句的直接外部多分支选择,相当于PASCAL语言中的CASE语句。
  形式:开关(表达式)
  比如要求根据考试成绩的等级打印出百分制分数段,用switch语句可以实现:
  解释:
  (1)开关后括号中的“表达式”,ANSI标准允许为任何类型。
  (2)当表达式的值等于案例后面的常量表达公式的值时,执行该案例后面的语句,如果案例中常量表达公式的所有值都与表达式不匹配,则执行默认后面的语句。
  (3)每个案例的常量表达值必须互不相同,否则会出现矛盾现象(表达式的同一个值有两个或两个以上的执行方案)。
  (4)每种情况下每种违约的发生顺序不影响执行结果。例如,' default: ',' case  'D': ',然后是' case  'A': '。
  (5)执行完一个案例后面的语句后,流程控制转移到下一个案例继续执行。“案例常量表达公式”只起陈述标签的作用,并不判断那里的条件。执行swith语句时,根据switch后面的表达式的值找到匹配的入口标签,然后从这个标签执行,无需判断。比如上面的例子,如果等级的值等于‘A’,就会连续输出。
  因此,在执行一个case分支后,进程应该跳出switch结构,即switch语句的执行应该终止。
  您可以使用break语句来实现这个目标。按照:重写上面的开关结构最后一个分支(默认)可以是无中断语句。如果等级值为' b  ',则只输出' 70-84 '。
  虽然case后面不止一条执行语句,但是没必要用花括号括起来,这个case后面的所有执行语句都会自动按顺序执行。当然加花括号也是可以的。
  (6)多个案例可以共享一组执行语句,如:
  当等级值为“A”、“B”或“c”时,执行同一组语句。
  二、开关语句的使用技巧
  1)尽量减少案例陈述的数量
  c语言C89标准指出一个switch语句至少要支持257个case语句;但是在C99标准中,分支数量应该增加到1023个。在实际编程应用中,为了提高程序的可读性和执行效率,应该尽可能减少案例语句的数量。尽量把长switch语句转换成嵌套switch语句,即高频语句可以放在一个case语句中作为嵌套switch语句的最外层;把执行频率低的case语句放在另一个switch语句中,放在嵌套switch语句的内层。