gpt4 book ai didi

c++ - 没有内部作用域的 if 语句?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:58 25 4
gpt4 key购买 nike

Afaik,代码中的每一对 { } 都会创建一个新范围。即使它只是为了它而使用,没有任何 iffor、函数或其他需要它的语句:

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?
}

最佳答案

N4140 [stmt.select]/1 读取:

The substatement in a selection-statement (each substatement, in the else form of the if statement) implicitly defines a block scope

所以,代码

if (a == 1)
int tmp; // is this one local to if?
else
int tmp2; // or this one?

相当于

if (a == 1)
{
int tmp; // yes, this one is local to if
}
else
{
int tmp2; // and this one as well
}

关于c++ - 没有内部作用域的 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com