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

时间:2011-09-30 15:24:58

标签: c++ function code-snippets curly-braces

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

void f5()
{
    int x;
    {
        int y;
    }
}

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

7 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分: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
}

答案 2 :(得分:4)

这是定义范围。变量Y在大括号外无法访问。

答案 3 :(得分:4)

大括号表示范围,变量x将在内括号范围内可见,但y在其大括号范围之外不可见。

答案 4 :(得分:3)

大括号定义范围级别。在大括号之外,y将无法使用。

答案 5 :(得分:3)

在范围出口处,内部对象被破坏。例如,您可以在括号中包含一个临界区,并在那里构造一个锁对象。然后你不必担心忘记解锁它 - 在退出范围时会自动调用析构函数 - 正常或由于异常。

答案 6 :(得分:1)

这看起来像是一个错误(不知道上下文)

这样做你已经在这些大括号内装了y值,因此在它之外是不可用的。

当然,如果他们试图解释范围,那可能是一个有效的代码