switch语句背后的整体思想很简单:开关表达式定量产生价值,和每个案例标签测试这个值为平等。如果一个标签匹配的情况下,语句后执行标签。如果任何情况下标签转换表达式匹配,下面的代码将执行默认标签(如果它存在的话)。
让我们更详细地检查每个这些概念。
我们开始使用开关关键字的switch语句,紧随其后的是表达式,我们希望评估。通常这个表达式只是一个单变量,但它可能更复杂像nX + 2或nX -纽约。这个表达式的限制是它必须评估不可或缺的类型(char,短,int,长,或枚举)。浮点变量和其他非整体类型可能不是用在这里。
开关的表情后,我们声明一个街区。块内,我们使用标签来定义我们想要测试所有的价值观为平等。有两种标签。
第一种标签的标签,使用情况下关键字声明,紧随其后的是一个常数表达式。常量表达式是一个常数的一种评估价值——换句话说,一个文字(如5)、enum(比如COLOR_RED),或一个常数积分变量(如nX、当nX被定义为一个常量int)。
标签是测试后的常数表达式平等反对开关关键字后面的表达式。如果他们匹配,代码执行情况下标签。一般来说,我们每一次break语句,告诉编译器,我们完成的案例。
值得注意的是,所有情况下标签表达式必须评估一个独特的价值。也就是说,你不能这么做:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
bool
IsNumber(char
cChar){ switch
(cChar) { case
'0': case
'1': case
'2': case
'3': case
'4': case
'5': case
'6': case
'7': case
'8': case
'9': return
true; default: return
false; }} |
如果任何case标签匹配,执行下一个语句。在这种情况下,该语句返回true;向调用者返回真值。
第二种标签是默认的标签,这是宣布使用默认关键字。这个标签下的代码被执行如果没有情况下匹配转换表达式。默认的标签是可选的。通常也称为开关组最后一个标签,尽管这并不是必需的。
语句是最棘手的一件事的方式执行收益相匹配。当案例匹配(或者默认的执行),执行从第一个开始声明后,标签和一直持续到下列条件之一:
1)开关组的结束
2)发生返回语句
3)发生转向语句
4)发生break语句
注意,如果这些条件得到满足,案件会溢出到其他情况下!考虑下面的程序:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
switch
(2){ case
1: //
Does not match -- skipped cout
<< 1 << endl; case
2: //
Match! Execution begins at the next statement cout
<< 2 << endl; //
Execution begins here case
3: cout
<< 3 << endl; //
This is also executed case
4: cout
<< 4 << endl; //
This is also executed default: cout
<< 5 << endl; //
This is also executed} |
本文详细介绍了switch语句背后的整体思想,包括其工作原理、语法结构、标签概念及注意事项。通过实例分析,帮助读者更好地理解和应用switch语句。
1681

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



