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