switch 和 case 语句用来表达数量较多的分支条件,语法如下:
switch(表达式)
{
case常量表达式1:语句块1
case常量表达式2:语句块2
......
default:语句块n
}
:: tip 建议
switch 语句可以包含多个 case 条件,case 后面的常量表达式必须各不相同。
进入 switch 语句后,先计算表达式的值,然后逐一匹配每个 case 的常量表达式,当匹配成功时,就执行对应的语句块,然后顺序执行之后的所有语句,直到整个 switch 语句结束。
如果遇到一个 break 语句,则中止 switch 语句的执行。
如果表达式与所有的 case 都不能成功匹配,则从 default 后面的语句块开始执行,直到 switch 语句结束。
::
:: warning 警告
当和某个 case 常量表达式匹配成功后,程序会执行该 case 的语句或语句块,以及后面所有分支的语句。
::
#include <iostream>
using namespace std;
int main(){
int a;
cout << "输入1-7之间的数字:";
cin >> a;
switch(a)
{
case 1:
cout << "Monday " << endl;
case 2:
cout << "Tuesday " << endl;
case 3:
cout << "Wednesday " << endl;
case 4:
cout << "Thursday " << endl;
case 5:
cout << "Friday " << endl;
case 6:
cout << "Saturday " << endl;
case 7:
cout << "Sunday " << endl;
default:
cout << "error " << endl;
}
return 0;
}
运行结果:
输入1-7之间的数字:3↙
Wednesday
Thursday
Friday
Saturday
Sunday
error
输入 3 后,与第三个 case 匹配成功后,执行第三个分支以及后面的所有语句。
但如果希望只执行第三个分支,输出“Wednesday”,而跳过后面的其他输出,那我们必须要在每个 case 的语句最后添加 break 语句。
break 是专门用于跳出类似 switch 的分支和其他循环结构的语句。
所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的其他语句,包括当前分支中的语句和其他分支中的语句。
我们使用 break 修改上面的代码后:
参考程序
#include <iostream>
using namespace std;
int main()
{
int a;
cout << "输入1-7之间的数字:";
cin >> a;
switch(a)
{
case 1:
cout << "Monday " << endl;
break;
case 2:
cout << "Tuesday " << endl;
break;
case 3:
cout << "Wednesday " << endl;
break;
case 4:
cout << "Thursday " << endl;
break;
case 5:
cout << "Friday " << endl;
break;
case 6:
cout << "Saturday " << endl;
break;
case 7:
cout << "Sunday " << endl;
break;
default:
cout << "error " << endl;
break;
}
return 0;
}
运行结果:
default 负责处理不符合任何 case 的情况,而且 switch 语句中只能有一个 default 分支,它可以出现在开头或者最后,也可以出现在两个 case 的中间。