可能不是我们想要的东西!当执行流从一个到另一个案件,这叫做fall-through。fall - throuth几乎从来不是程序员所期望的,所以在罕见的情况下,通常的做法是留下评论,指出fall - throuth故意是。
为了防止fall-through,我们必须使用一个打破,回报,或转向语句在我们的例子中语句的结束。立即返回语句终止当前函数,和一个值可能是返回给调用者。这使得很多总之函数只有一个目的,比如IsNumber上面例子()函数。
然而,这是常有的事,我们想要终止语句也没有终止整个函数。为此,我们使用break语句。休息休息声明(声明使用关键字)告诉编译器,我们完成了这个开关(或,,或for循环),和执行的语句结束后继续开关块。
让我们看看最后一个例子打破正确插入语句:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
switch
(2)
{
case
1:
// Does not match -- skipped
cout << 1 << endl;
break
;
case
2:
// Match! Execution begins at the next statement
cout << 2 << endl;
// Execution begins here
break
;
// Break terminates the switch statement
case
3:
cout << 3 << endl;
break
;
case
4:
cout << 4 << endl;
break
;
default
:
cout << 5 << endl;
break
;
}
// Execution resumes here
|
警告:忘记break语句在一个开关块中是最常见的一个c++犯的错误!
测验
1)编写一个名为计算()的函数,需要两个整数和一个字符代表一个下面的数学操作:+、-、/、或*。使用switch语句执行适当的数学运算整数,并返回结果。如果一个无效的操作符传递到函数,该函数应该打印“错误”和程序应该退出(使用exit()函数)。
测验的答案
你是正确的,这个函数包含一个逻辑错误。我会改变这个问题和答案来避免这个问题。
返回一个错误字符串行不通,因为函数返回一个整数。顺便说一句,该函数也会崩溃,如果用户试图做一个分裂操作和第二个参数(分母)为0。