我有这个代码
int a = 0 ;
int b =2;
switch (a)
{
case a <= b: //<--error
//Do something
break;
default:
break;
}
我知道这可以用 if else 语句来完成,但我很好奇,为什么它不能在 switch case 语句中工作?
这可以用“C”编程来完成吗?
您无法在 switch case 中给出表达式,您必须给出
constant
值而不是 case 中的表达式。
switch语句是处理多个的控制语句 通过将控制权传递给其中一个案例来进行选择和枚举 其体内的陈述
您可以在此处阅读有关 switch 的更多信息。
a <= b is
bool
表达式,但 a
是 int
。
还根据 http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.90).aspx 每个案例标签指定一个常量值。在你的情况下是表达,而不是恒定的。
该语言被设计为需要恒定的大小写值有几个原因,包括:
(1) 确保范围不能重叠(并且可以在编译时检查)。 (2) 使 switch 语句具有极高的性能。 (3) 让 C++ 程序员更熟悉(早期 C# 新用户中,C++ 程序员占很大比例)。
因为在某些情况下你应该指定 a 的可能值,而不是条件。
如果你这样做,第一个案例将被执行
switch(True) {
case a<= b:
//Do something
break;
}
因此,将表达式的结果(本例中为 True)与 switch 的参数(本例中为 0)进行比较,比较如下所示: “是 0 == True”;这显然会导致 false,因为 0 被视为 false,非零被视为 true,因此代码将无法运行。