下面的代码声明了两个整型变量,并试图在 switch 语句中使用它们。这在 C++ 中是合法的吗?如果不是,为什么?
以下是代码示例:int i = 0;
int x = 3;
switch (i)
{
case x:
// stuff
break;
case 0:
// other stuff
break;
}
下面的代码声明了两个整型变量,并试图在 switch 语句中使用它们。这在 C++ 中是合法的吗?如果不是,为什么?
以下是代码示例:int i = 0;
int x = 3;
switch (i)
{
case x:
// stuff
break;
case 0:
// other stuff
break;
}
const int x = 3;
switch语句能使用变量吗?
可以。这是可行的。
int i = 0;
switch (i) {
}
case
语句不能使用变量(必须是常量)。case 0:
// first
break;
case 1:
// second
break;
default:
// other
case i + 3:
这样的东西也是有效的,如果 i
声明为 const
。或者在C++11中,case g():
,前提是 g
被定义为 constexpr
。 - James Kanze
switch
中提供任何表达式,例如i
或者i * 2
等等都可以,但是case
的值必须是编译时常量表达式,所以你的x
不合法,但是0
是合法的。 - Tony Delroyswitch
仅适用于整数类型...即bool
、char
、[short
/long
] [unsigned
]int
、一个enum
或者可以在上下文中隐式转换为其中任何一种的类,但不包括任何类型的字符串、float
或double
。 - Tony Delroy