1.switch分支语句的基本语法
switch(表达式)
{
case 常量1:
语句块1
break;
case 常量2:
语句块2
break;
...
case 常量n:
语句块n
break;
default:
默认语句块
}
switch后接的表达式的值,如果匹配之后的case常量,则跳转到对应的语句块并执行。如果全部case都不匹配,则跳转到default中的语句块执行。
简单例子:
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
switch (nValue)
{
case 0:
printf("case 0\r\n");
break;
case 5:
printf("case 5\r\n");
break;
case 7:
printf("case 7\r\n");
break;
case 8:
printf("case 8\r\n");
break;
case 10:
printf("case 10\r\n");
break;
default:
printf("没有case常量匹配,进入default流程\r\n");
break;
}
return 0;
}
输入5之后的运算结果:

2.break的作用
break用于跳出当前作用域即所在的{}。
如果各个语句块最后没有break的话,则流程不会跳出switch,而是按顺序执行之后的语句。
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
switch (nValue)
{
case 0:
printf("case 0\r\n");
break;
case 5:
printf("case 5\r\n");
case 7:
printf("case 7\r\n");
case 8:
printf("case 8\r\n");
break;
case 10:
printf("case 10\r\n");
break;
default:
printf("没有case常量匹配,进入default流程\r\n");
break;
}
return 0;
}
输入5之后的运行结果:

3.多个case写到一起的情况
我们可以将多个case写在一起,对应同一个语句块:
#include <stdio.h>
int main(int argc, char* argv[])
{
char chValue = 0;
scanf("%c", &chValue);
switch (chValue)
{
case ' ':case ',':case ';':
printf("空格、逗号、分号都算分隔符\r\n");
break;
default:
printf("没有case常量匹配,进入default流程\r\n");
break;
}
return 0;
}
输入;后的运行结果:

4.switch与if两种分支语句的比较
if后可接任意表达式,但是switch后只能接整型表达式(或者能转换为整型的表达式)switch更简洁,同等复杂度的情况下,编译后的效率,switch的效率一般不低于if
5.学习地址: switch分支语句
本文详细介绍了C++中switch分支语句的语法、作用及常见用法,包括基本结构、break语句的作用、多case合并执行以及与if语句的比较。通过实例展示了如何在不同情况下使用switch,并分析了两者的效率差异。
3347

被折叠的 条评论
为什么被折叠?



