我为这个过于简单化的问题道歉,但我似乎无法在我正在阅读的书中弄清楚这个例子:
void f5()
{
int x;
{
int y;
}
}
围绕int y
的大括号是什么?你能把牙箍放在任何你想要的地方吗?如果是这样,你何时以及为何会这样做,或者这只是书中的错误?
答案 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值,因此在它之外是不可用的。
当然,如果他们试图解释范围,那可能是一个有效的代码