Los*_*st1 14 c++ switch-statement
根据这本书,我正在读:
问:如果我在switch-case语句中省略了中断,会发生什么?
断言语句使程序执行能够退出切换构造.没有它,执行继续评估以下case语句.
假设我的代码看起来像
switch (option}{
case 1:
do A;
case 2:
do B;
default:
do C;
break;
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着如果我选择案例1,A和C就完成了.如果我选择案例2,则完成B和C. 如果我不选择,那么只有C完成.
如果是这样,如果我们在做了C之后省略了休息会发生什么.
我认为这些是糟糕的编程习惯,但我很好奇会发生什么情况才能更深入地理解它是如何工作的.谢谢
Kha*_*tri 10
如果您在任何情况下都不包括中断,那么下面的所有情况都将被执行,直到它看到中断.
如果你没有在默认值中包含break,那么它将不会产生任何影响,因为在这个'Default'情况下没有任何情况.
并且不使用通常被视为不良做法的休息,但有时候它也可能因为它的落后性质而变得方便.例如:
案例选项A:
//optionA needs to do its own thing, and also B's thing.
//Fall-through to optionB afterwards.
//Its behaviour is a superset of B's.
Run Code Online (Sandbox Code Playgroud)
案例选项B:
// optionB needs to do its own thing
// Its behaviour is a subset of A's.
break;
Run Code Online (Sandbox Code Playgroud)
案例选项C:
// optionC is quite independent so it does its own thing.
break;
Run Code Online (Sandbox Code Playgroud)小智 7
这些break行为就像一个goto命令。或者,作为一个更好的例子,就像return在void函数中使用一样。既然到了最后,那有没有就没有区别了。虽然,我确实喜欢包括它。
switch (option}{
case 1:
do A;
case 2:
do B;
case 2:
do C;
break;
default:
do C;
}
Run Code Online (Sandbox Code Playgroud)
如果你的选择是1它执行一切直到它找到break关键字...这意味着中断结束执行switch- > case
输出:A然后B然后C所以建议在每个案例之后放置休息如:
switch (option}{
case 1:
do A;
break;
case 2:
do B;
break;
do C;
break;
default:
do D;
}
Run Code Online (Sandbox Code Playgroud)
如果您的选项是1输出将是:只是A ...
注意:default不需要break;
| 归档时间: |
|
| 查看次数: |
39705 次 |
| 最近记录: |