繁体   English   中英

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

[英]Can Someone Explain This Snippet (Why Are These Braces Here)?

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

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

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

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

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

void f5()
{
    int x = 1;
    {
        int y = 3;
        y = y + x;          // works
        x = x + y;          // works
    }
    y = y + x;              // fails
    x = x + y;              // fails
}

它是定义范围。 变量Y在大括号外部不可访问。

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

大括号定义范围级别。 在括号之外, y将不可用。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM