我有这个代码
int a = 0 ;
int b =2;
switch (a)
{
case a <= b: //<--error
//Do something
break;
default:
break;
}
我知道这可以用 if else 语句来完成,但我很好奇,为什么它在 switch case 语句中不起作用?
这可以在“C”编程中完成吗?
我有这个代码
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 语句是一个控制语句,它通过将控制权传递给其主体中的一个 case 语句来处理多个选择和枚举
您可以在此处阅读有关 switch的更多信息。
a <= b 是bool
表达式,但a
is int
。
同样根据http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.90).aspx每个案例标签指定一个常量值。在您的情况下是表达式,而不是常量。
该语言被设计为需要恒定的大小写值有几个原因,包括:
(1) 确保不能有重叠的范围(并且可以在编译时检查)。(2) 使 switch 语句具有极高的性能。(3) 更熟悉 C++ 程序员(在早期,他们是 C# 新用户的很大一部分)。
因为在某些情况下,您应该指定 a 的可能值,而不是条件。