我一直想知道这一点 - 为什么你不能在switch语句中的case标签之后声明变量?在C++中,您可以在任何地方声明变量(并且声明它们接近第一次使用显然是一件好事)但是以下仍然不起作用:
switch (val)
{
case VAL:
// This won't work
int newVal = 42;
break;
case ANOTHER_VAL:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
以上给出了以下错误(MSC):
'case'标签跳过'newVal'的初始化
这似乎也是其他语言的限制.为什么会出现这样的问题?
我正在创建一个控制台应用程序并使用switch语句来创建一个简单的菜单系统.用户输入采用单个字符的形式,在屏幕上显示为大写字母.但是,我确实希望程序接受小写和大写字符.
我理解switch语句用于比较常量,但有可能做类似下面的事情吗?
switch(menuChoice) {
case ('q' || 'Q'):
//Some code
break;
case ('s' || 'S'):
//More code
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
如果无法做到这一点,是否有解决方法?我真的不想重复代码.