我这个过于简单化的问题道歉,但我似乎无法找出这个例子在书中我读:有人可以解释这段代码(为什么这些括号在这里)?
void f5()
{
int x;
{
int y;
}
}
什么是围绕int y
的括号?你可以随身携带牙套吗?如果是这样,何时以及为什么要这样做,或者这只是书中的错误?
我这个过于简单化的问题道歉,但我似乎无法找出这个例子在书中我读:有人可以解释这段代码(为什么这些括号在这里)?
void f5()
{
int x;
{
int y;
}
}
什么是围绕int y
的括号?你可以随身携带牙套吗?如果是这样,何时以及为什么要这样做,或者这只是书中的错误?
它的定义范围。变量Y不能在大括号之外访问。
大括号表示范围,变量x将在内部大括号的范围内可见,但y在大括号范围外不可见。
大括号定义范围级别。在大括号外,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
}
在范围出口内的对象销毁。例如,您可以将一个关键部分放在花括号中,并在那里构建一个锁定对象。然后,您不必担心忘记解锁它 - 在正常情况下或因为例外情况而退出范围时,会自动调用析构函数。
这是一种技术,主要应用于C语言,用于在第一个语句后创建本地临时值。当执行退出结束大括号时,在该范围内创建的所有变量消失。 –