我想从switch语句的中间跳到以下代码中的循环语句:
while (something = get_something())
{
switch (something)
{
case A:
case B:
break;
default:
// get another something and try again
continue;
}
// do something for a handled something
do_something();
}这是使用continue的有效方式吗?switch语句会忽略continue语句吗?在这里,C和C++在行为上有区别吗?
发布于 2010-01-27 20:34:22
这很好,continue语句与封闭循环相关,并且您的代码应该等价于(避免这样的跳转语句):
while (something = get_something()) {
if (something == A || something == B)
do_something();
}但是,如果您希望break像您的注释所建议的那样退出循环(它总是再次尝试另一个东西,直到计算结果为false),那么您将需要一个不同的结构。
例如:
do {
something = get_something();
} while (!(something == A || something == B));
do_something();发布于 2013-11-16 22:25:05
是,switch语句将忽略continue,并将转到要测试的循环的条件。我想分享一下Ritchie从C编程语言参考中摘录的内容:
continue语句与break相关,但使用频率较低;它导致封闭的for、while或do循环的下一次迭代开始。在while和do中,这意味着测试部分立即执行;在for中,控制传递到增量步骤。
continue语句仅适用于循环,不适用于switch 语句。循环内的continue switch 内的continue会导致下一次循环迭代。
对于C++,我不确定这一点。
发布于 2010-01-27 20:26:13
是的,它很好-就像在if语句中使用它一样。当然,您不能使用break从交换机内部中断循环。
https://stackoverflow.com/questions/2146763
复制相似问题