对于switch语句的情况,在本地块中定义变量是一个好主意吗?

bas*_*ibe 5 c variables switch-statement

我有一个相当长的switch-case语句.有些案件真的很短而且微不足道.一些更长,需要一些从未在其他地方使用的变量,如下所示:

switch (action) {
    case kSimpleAction:
        // Do something simple
        break;
    case kComplexAction: {
        int specialVariable = 5;
        // Do something complex with specialVariable
      } break;
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是在进入之前声明该变量switch:

int specialVariable = 5;
switch (action) {
    case kSimpleAction:
        // Do something simple
        break;
    case kComplexAction:
        // Do something complex with specialVariable
        break;
}
Run Code Online (Sandbox Code Playgroud)

这可能会变得相当混乱,因为不清楚case变量属于哪个并且它使用了一些不必要的内存.

但是,我从未在其他地方见过这种用法.
你认为在一个块中为一个单独声明变量是一个好主意case吗?

Max*_*Max 11

如果在switch块之后没有使用specialVariable,则在"case"块中声明它.

通常,变量应在尽可能小的范围内声明.

  • @gbn - 一个`case`本身并没有创建一个新的范围.代码需要添加`{}`来引入新范围(正如OP在他的第一个例子中所做的那样). (4认同)