Matt Joiner Matt Joiner - 21 days ago 5
C Question

Using continue in a switch statement

I want to jump from the middle of a

switch
statement, to the loop statement in the following code:

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();
}


Is this a valid way to use
continue
? Are
continue
statements ignored by
switch
statements? Do C and C++ differ on their behaviour here?

Answer

It's fine, the continue statement relates to the enclosing loop, and your code should be equivalent to (avoiding such jump statements):

while (something = get_something()) {
    if (something == A || something == B)
        do_something();
}

But if you expect break to exit the loop, as your comment suggest (it always tries again with another something, until it evaluates to false), you'll need a different structure.

For example:

do {
    something = get_something();
} while (!(something == A || something == B));
do_something();