下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

简单分析switch语句

作者:课课家教育     来源: http://www.kokojia.com点击数:1395发布时间: 2019-03-18 15:18:43

标签: 编程语言C语言switch语句

大神带你学编程,欢迎选课

  什么是switch语句?switch语句的作用是什么?估计很多初学C语言的同学都不太懂。不用担心,下面课课家笔者就为大家介绍switch语句的含义和作用。

  switch语句又称开关语句,它与if类似。在C语言虽然没有限制ifelse能够处理的分支数量,但当分支过多时用ifelse处理会不太方便,而且容易出现ifelse配对出错的情况。比如输入一个整数,输出该整数对应的星期几的英文表示:

  #include <stdio.h>

  int main(){

  int a;

  printf("Input integer number:");

  scanf("%d",&a);

  if(a==1){

  printf("Monday\n");

  }elseif(a==2){

  printf("Tuesday\n");

  }elseif(a==3){

  printf("Wednesday\n");

  }elseif(a==4){

  printf("Thursday\n");

  }elseif(a==5){

  printf("Friday\n");

  }elseif(a==6){

  printf("Saturday\n");

  }elseif(a==7){

  printf("Sunday\n");

  }else{

  printf("error\n");

  }

  return 0;

  }

  运行结果:

  Input integer number:3↙

  Wednesday

  对于这种情况,实际开发中我们一般使用switch语句代替,具体大家可以看下面的代码:

  #include <stdio.h>

  int main(){

  int a;

  printf("Input integer number:");

  scanf("%d", &a);

  switch(a){

  case 1:printf("Monday\n");break;

  case 2:printf("Tuesday\n");break;

  case 3:printf("Wednesday\n");break;

  case 4:printf("Thursday\n");break;

  case 5:printf("Friday\n");break;

  case 6:printf("Saturday\n");break;

  case 7:printf("Sunday\n");break;

  default:printf("error\n");break;

  }

  return 0;

  }

  运行结果:

  Input integer number:4↙

  Thursday

  简而言之,switch是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的ifelse语句,基本格式如下:

  switch(表达式){

  case整型数值1:语句1;

  case整型数值2:语句2;

  ......

  case整型数值n:语句n;

  default:语句n+1;

  }

  它的执行过程是:

  ①首先计算“表达式”的值,假设为m。

  ②从第一个case开始,比较“整型数值1”和m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的case是否匹配成功。

  ③如果“整型数值1”和m不相等,就跳过冒号后面的“语句1”,继续比较第二个case、第三个case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设m和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。

  ④如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行default后的“语句n+1”。

  需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。比如:

  #include <stdio.h>

  int main(){

  int a;

  printf("Input integer number:");

  scanf("%d", &a);

  switch(a){

  case 1:printf("Monday\n");

  case 2:printf("Tuesday\n");

  case 3:printf("Wednesday\n");

  case 4:printf("Thursday\n");

  case 5:printf("Friday\n");

  case 6:printf("Saturday\n");

  case 7:printf("Sunday\n");

  default:printf("error\n");

  }

  return 0;

  }

  运行结果:

  Input integer number:4↙

  Thursday

  Friday

  Saturday

  Sunday

  error

  此时我们输入4会发现和第四个分支匹配成功,系统会执行第四个分支以及后面的所有分支。然而这并不是我们想要的结果,我们想要的只是执行第四个分支并跳过后面的其他分支。为了达到这个目标,我们可以要在每个分支最后添加break;语句。breakC语言中的一个关键字,用于跳出switch语句。所谓“跳出”是指一旦遇到break就不再执行switch中的任何语句,包括当前分支中的语句和其他分支中的语句。换句话说就是整个switch执行结束了,接下来会执行整个switch后面的代码。下面笔者使用break修改上面的代码:

  #include <stdio.h>

  int main(){

  int a;

  printf("Input integer number:");

  scanf("%d",&a);

  switch(a){

  case 1:printf("Monday\n");break;

  case 2:printf("Tuesday\n");break;

  case 3:printf("Wednesday\n");break;

  case 4:printf("Thursday\n");break;

  case 5:printf("Friday\n");break;

  case 6:printf("Saturday\n");break;

  case 7:printf("Sunday\n");break;

  default:printf("error\n");break;

  }

  return 0;

  }

  运行结果:

  Input integer number:4↙

  Thursday

  在这里由于default是最后一个分支,匹配后不会再执行其他分支,所以也可以不添加break;语句。最后需要说明的两点是:

  ①case后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。具体大家可以看下面的例子:

  case 10:printf("...");break;//正确

  case 8+9:printf("...");break;//正确

  case 'A':printf("...");break;//正确,字符和整数可以相互转换

  case 'A'+19:printf("...");break;//正确,字符和整数可以相互转换

  case 9.5:printf("...");break;//错误,不能为小数

  case a:printf("...");break;//错误,不能包含变量

  case a+10:printf("...");break;//错误,不能包含变量

  ②default不是必须的。当没有default时,如果所有case都匹配失败,那么就什么都不执行。

  最后笔者给大家放个switch语句的关系图给大家参考参考(图1)

switch语句的关系图

图1

  本次简单分析switch语句的教程到此就暂告一段落,如果以后有补充的话笔者会继续在此补充,希望这个教程对大家学习C语言能起到一定的帮助作用!

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程