gpt4 book ai didi

c++在switch语句中声明一个变量

转载 作者:太空狗 更新时间:2023-10-29 19:57:46 25 4
gpt4 key购买 nike

我的 C++ 代码中有一个 switch 语句,我想在该语句的 case 中声明和使用一个变量。该变量将仅在该特定 case 的范围内使用。

switch(mode)
{
case abc:
...
struct commonData;
commonData = manager->getDataByIndex(this->Data.particularData);
int someInt = 1;
...
break;
case xyz:
...
commonData = Manager->getDataByIndex(this->Data.particularData);
break;
default:
...
break;
}

我尝试在 case 中简单地声明、初始化和使用变量 (int someInt),但这给了我一些编译错误......遇到过这个问题关于 SO:Why can't variables be declared in a switch statement? ,我尝试按照答案的建议进行操作,并将 {} 添加到有问题的 case 中,所以我的 switch 现在看起来像这样:

switch(mode)
{
case abc:
{
...
struct commonData;
commonData = manager->getDataByIndex(this->Data.particularData);
int someInt = 1;
...
break;
}
case xyz:
...
commonData = manager->getDataByIndex(this->Data.particularData);
break;
default:
...
break;
}

但我现在收到编译错误,指出:“未声明的标识符”在 xyz 案例中使用的变量 (commonData)切换

查看了这个 - 似乎这个变量是在 switchabc 案例中声明的......很明显,因为我已经添加了 {}abc,通过尝试在 abc 之外使用它,我现在尝试在其声明范围之外使用它。

那么为什么我不能像声明/使用commonData一样声明/使用someInt而不需要{ case 声明的地方?

最佳答案

{ .. } 创建一个局部作用域,因此您的变量声明在另一个作用域中将不可见。

在局部范围内为每个 case 添加声明,或者,如果您想在 switch 语句之外使用变量,请在 switch 之前声明它。

关于c++在switch语句中声明一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105365/

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