【C语言】switch 分支语句

时间:2022-10-17 17:12:50

????write in front????   

????大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流????

????2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP创作者~周榜92﹣总榜826⇿全网访问量35w+????

????本文由 謓泽 原创 发布在51CTOP 如需转载还请通知⚠

????个人主页-​謓泽51Ctop的博客​????

????欢迎各位→点赞???? + 收藏⭐️ + 留言????

????系列专栏-​謓泽51Ctop的分类_51CTO博客​????

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本????

【C语言】switch 分支语句


???? swtich 语句

[if]语句只有两个分支可以可供选择,而在实际问题中常需要用到多分支的选择。当然使用嵌套[if]语句也可以实现多分支的选择,但是如果分支很多的话,就会使得嵌套的[if]语句层数较多,程序代码并不是具有很高的可读性。而且,分支较多的话还会出现配对错误的情况,可读性不好。所以,这个时候C语言就提供了另外一种分支语句。C语言可以使用 [switch] 语句直接处理多分支选择的情况,将我们程序代码的可读性提高!


???? switch 语句的基本形式

[switch]语句是多分支选择语句,在我们程序代码中,如果我们觉得用的分支语句较多的时候。这个时候我们就可以用到[switch]语句来代替 [if - else]分支语句。

例如:如果只需要检验某一个整形变量的可能取值,那么这个时候可以用更简便的[switch]语句。[switch]语句的一般形式如下:

switch(表达式)
{
case 常量表达式 1:
语句 1;
case 常量表达式 2:
语句 2;

case 常量表达式 n:
语句 n;
default

【C语言】switch 分支语句

计算表达式当中的值,并且逐个与常量表达式进行比较。当表达式的值与某个常量表达式相等的时候,即执行其后的语句,然后不再进行判断。继续执行后面所有的[case]语句,如表达式的值没有一个和[case]当中的常量表达式相等的时候,则执行[default]默认情况语句块

 例如:程序如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main(void)
{
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

【C语言】switch 分支语句

假设编译运行结果:

Input integer number:4
Thursday
Friday
Saturday
Sunday
error 

输入整形数字4,发现和第④个分支匹配成功,于是就执行第四个分支以及后面的所有分支。这显然不是我们想要的结果,我们希望只执行第四个分支,而跳过后面的其他分支。为了达到这个目标,必须要在每个分支最后添加 ​break;​​语句


???? break 介绍

是C语言中的一个关键字,专门用于跳出 [switch] 语句。所谓"跳出",是指一旦遇到[break],就不再执行 [switch] 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个[switch] 执行结束了,接着会执行整个 [switch] 后面的代码。

使用上面修改用[break]的代码

#define
#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;
}

【C语言】switch 分支语句

假设编译运行结果:

Input integer number:4
Thursday

???? '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; //错误,不能包含变量

【C语言】switch 分支语句


???? 说明:注意! 

[switch] 语句检验条件必须是整形表达式,这意味其中也可以包含运算符和函数调用,而[case] 语句检验的值必须是整形常量,即常量表达式或者常量运算

在使用 [switch] 语句时,如果没有一个[case]语句后面的值匹配[switch]的条件,就执行[default]语句后面的代码。其中,任意两个 [case] 语句都不能有相同的常量值;每个[swtich]语句结构都只有一个[default]语句,[default]语句是可以省略的

在 [case] 语句表示条件后有一个冒号":",在编写程序的时候不要忘记


???? break 介绍

是C语言中的一个关键字,专门用于跳出 [switch] 语句。所谓"跳出",是指一旦遇到[break],就不再执行 [switch] 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个[switch] 执行结束了,接着会执行整个 [switch] 后面的代码。

使用上面修改用[break]的代码

#define
#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;
}

【C语言】switch 分支语句

假设编译运行结果:

Input integer number:4
Thursday


???? '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; //错误,不能包含变量

【C语言】switch 分支语句


???? 说明:注意! 

[switch] 语句检验条件必须是整形表达式,这意味其中也可以包含运算符和函数调用,而[case] 语句检验的值必须是整形常量,即常量表达式或者常量运算

在使用 [switch] 语句时,如果没有一个[case]语句后面的值匹配[switch]的条件,就执行[default]语句后面的代码。其中,任意两个 [case] 语句都不能有相同的常量值;每个[swtich]语句结构都只有一个[default]语句,[default]语句是可以省略的

在 [case] 语句表示条件后有一个冒号":",在编写程序的时候不要忘记


???? break 介绍

是C语言中的一个关键字,专门用于跳出 [switch] 语句。所谓"跳出",是指一旦遇到[break],就不再执行 [switch] 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个[switch] 执行结束了,接着会执行整个 [switch] 后面的代码。

使用上面修改用[break]的代码

#define
#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;
}

【C语言】switch 分支语句

假设编译运行结果:

Input integer number:4
Thursday


???? '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; //错误,不能包含变量

【C语言】switch 分支语句


???? 说明:注意! 

[switch] 语句检验条件必须是整形表达式,这意味其中也可以包含运算符和函数调用,而[case] 语句检验的值必须是整形常量,即常量表达式或者常量运算

在使用 [switch] 语句时,如果没有一个[case]语句后面的值匹配[switch]的条件,就执行[default]语句后面的代码。其中,任意两个 [case] 语句都不能有相同的常量值;每个[swtich]语句结构都只有一个[default]语句,[default]语句是可以省略的

在 [case] 语句表示条件后有一个冒号":",在编写程序的时候不要忘记。