【发布时间】:2015-04-29 07:24:08
【问题描述】:
Afaik,代码中的每一对 { } 都会创建一个新范围。即使它只是为了它而使用,没有任何if、for、函数或其他需要它的语句:
void myFun(void)
{
int a;
{
int local;
}
}
我开始怀疑 - 当 if 语句在不使用大括号(只有 1 行正文)的情况下编写时,它是否仍会创建一个新范围?
voidmyFun(int a)
{
int b;
if (a == 1)
int tmp; // is this one local to if?
else
int tmp2; // or this one?
b = 2; // could I use tmp here?
}
【问题讨论】:
-
是的,他们是本地的
if部分 -
"//我可以在这里使用 tmp" - 你尝试了吗?发生了什么,它是否支持或压制了您对前两次询问的想法?
-
不,我没有。一,因为现在我什至没有可以测试它的环境,二,因为这样的测试并不能说明全部真相 - 它可能适用于我的情况,而不适用于其他人,并且不会给我原因。另外,我认为这对于 SO 的其他用户来说可能是一个有用的问题。
标签: c++ variables if-statement scope