C++|switch语句中省略break实现直通的细节

switch语句测试一个变量,根据它的值选择一个分支来执行。

switch关键字后面是圆括号中的表达式。该表达式必须求值为整数、字符或枚举值。switch主体由一系列条件分支构成,每个都包含case(条件)关键字、一个值和一个冒号。

对条件进行标识的值必须是整数类型的常量。符合条件的包括整数、枚举值和字符。例如,5和a是有效值,但"abc"无效,因为它是字符串字面值。

每个条件分支都可包含任意数量的语句。在每个分支末尾都用break语句退出switch语句。

一般不需要用大括号封闭条件分支中的代码。用break语句即可结束一个条件分层。但是,如果需要在分支代码中声明变量,就必须使用大括号。

switch语句可定义default分支。所有case标签都不匹配switch表达式,就执行default分支中的语句。

即使不执行任何特殊处理,也最好定义default分支。包含default分支表示你没有忘记它。另外,default分支有助于捕捉非预期的值,并向用户显示恰当的警告消息。

如果一个case分支末尾没有break语句,控制流程就会从下一个语句继续。这称为直通(fall-through)。可利用这个功能来避免重复的代码,只是注意不要无意间造成直通。

switch如果没有break,满足条件的分支直至break之间的语句都会被执行。

C++编译器对switch的支持可以理解为:当变量在某个分支取某个值时,执行某个分支和没有用break结尾的分支,直到遇到break语句。

#include <iostream>
using namespace std;
void main()
{
int month=1;
switch (month)
{
case 12:cout<<"12月\n";
case 1:
case 2:cout<<" [Winter]\n";break;
case 3:
case 4:
case 5: cout<<" [Spring]\n"; break;
case 6:
case 7:
case 8: cout<<" [Summer]\n"; break;
case 9:
case 10:
case 11: cout<<" [Fall]\n"; break;
}
system("pause");
}

输出:

12月

[Winter]

-End-

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();