我有这样的代码为什么我不能在int的switch-statement中使用条件作为案例?
int a = 0 ;
int b =2;
switch (a)
{
case a <= b: //<--error
//Do something
break;
default:
break;
}
我知道这可以与如果else语句来实现,但我很好奇,为什么不能在一个开关case语句itwork?
这可以在“C”编程中完成吗?
我有这样的代码为什么我不能在int的switch-statement中使用条件作为案例?
int a = 0 ;
int b =2;
switch (a)
{
case a <= b: //<--error
//Do something
break;
default:
break;
}
我知道这可以与如果else语句来实现,但我很好奇,为什么不能在一个开关case语句itwork?
这可以在“C”编程中完成吗?
因为在这种情况下,您应该指定a的可能值,而不是条件。
有几个原因的语言被设计成需要恒定的情况下的值,包括:
(1)为了确保不能有重叠的范围(并且这可以在编译时被选中)。 (2)使开关语句非常高效。 (3)对C++程序员更为熟悉(他们在早期是C#新用户的一大部分)。
a < = b是bool
表达式,但是a
是int
。
也根据http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.90).aspx每个案例标签指定一个常数值。在你的情况是表达式,而不是常量。
确定你可以在'switch'情况下拥有表达式。它们只是*常量整数表达式*。 –