有人可以解释这个片段(为什么这些大括号在这里)?

Gar*_*ary 9 c++ function curly-braces code-snippets

我为这个过于简单化的问题道歉,但我似乎无法在我正在阅读的书中弄清楚这个例子:

void f5()
{
    int x;
    {
        int y;
    }
}
Run Code Online (Sandbox Code Playgroud)

周围int y有什么括号?你能把牙箍放在任何你想要的地方吗?如果是这样,你何时以及为何会这样做,或者这只是书中的错误?

taf*_*o85 13

这样的大括号表明大括号内的代码现在处于不同的范围内.如果您尝试在大括号外访问y,则会收到错误.

  • 函数有自己的范围,但也可以在函数中包含范围.这可能非常有用,例如C++对象具有析构函数,当对象超出范围时,这些可用于在特定点释放资源.您可能希望在mid函数中执行此操作. (4认同)

sjn*_*ngm 6

这是一个范围变量的问题,例如:

void f5()
{
    int x = 1;
    {
        int y = 3;
        y = y + x;          // works
        x = x + y;          // works
    }
    y = y + x;              // fails
    x = x + y;              // fails
}
Run Code Online (Sandbox Code Playgroud)