'break' statement when using curly braces in switch-case

我只是一个虾纸丫 提交于 2019-11-30 10:45:29

Short answer: it doesn't matter.

Just a give a slightly more detailed answer...

The official C99 specification says the following about the break statement:

A break statement terminates execution of the smallest enclosing switch or iteration statement.

So it really doesn't matter. As for me, I put the break inside the curly braces. Since you can also have breaks in other places inside your curly braces, it's more logical to also have the ending break inside the braces. Kind of like the return statement.

There's tons of different coding styles of how to combine curly braces and switches. I'll use the one I prefer in the examples. The break statement breaks out of the innermost loop or switch statement, regardless of location. You could for example have multiple breaks for a single case:

switch (foo) {
case 1:
    {
        if (bar)
            break;
        bar = 1;
        ...
    }
    break;
}

Note that you can also put the cases anywhere, though that is somewhat considered bad practice. The case label is very much like a goto label. It has happened that I've written something like this:

switch (foo) {
case 1:
    bar = 1;
    if (0) {
case 2:
        bar = 2;
    }
    ...
    break;
}

but use it with care.

You probably don't want the curlies in the first place unless you need them for lexical scope. The first example looks better to me, but I suppose the real answer is that it's a matter of taste.

As clearly stated, this is just a matter of personal style, but I always put the break statement outside the braces: putting the break before the closing brace seems to me to jump out a compound statement thus slightly increasing the spaghetti code feeling.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!