初始化switch语句中的变量(int32)

这个问题在这里已经有了答案:

  • 为什么不能在switch语句中声明变量? 23个答案

  • 尝试添加{}

    default:
    {
        int32 x = 1;
        doSomething(x);
        break;
    }
    

    根据标准:

    可以将其转换为块,但不能绕过具有初始化的声明。 从自动存储持续时间不在范围的变量点到其范围内的点跳转91的程序不合格,除非....

    void f() {
        // ...
        goto lx; // ill-formed: jump into scope of a
            // ...
        ly:
            X a = 1;
            // ...
        lx:
            goto ly; // OK, jump implies destructor
                     // call for a followed by construction
                     // again immediately following label ly
    }
    

    91)switch语句转换为case标签被认为是这方面的一个跳跃。

    链接地址: http://www.djcxy.com/p/14797.html

    上一篇: Initializing variables (int32) inside switch statement

    下一篇: C if vs switch