-1

我有这个代码

int a = 0 ;
int b =2;
switch (a)
{ 
    case  a <= b: //<--error 
        //Do something
        break;
    default:
        break;

}

我知道这可以用 if else 语句来完成,但我很好奇,为什么它在 switch case 语句中不起作用?

这可以在“C”编程中完成吗?

4

4 回答 4

3

你不能在 switch case 中给出表达式,你必须constant在 case 中给出值而不是表达式。

switch 语句是一个控制语句,它通过将控制权传递给其主体中的一个 case 语句来处理多个选择和枚举

您可以在此处阅读有关 switch的更多信息。

于 2013-01-09T09:42:53.583 回答
2

a <= b 是bool表达式,但ais int

同样根据http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.90).aspx每个案例标签指定一个常量值。在您的情况下是表达式,而不是常量。

于 2013-01-09T09:47:19.443 回答
1

该语言被设计为需要恒定的大小写值有几个原因,包括:

(1) 确保不能有重叠的范围(并且可以在编译时检查)。(2) 使 switch 语句具有极高的性能。(3) 更熟悉 C++ 程序员(在早期,他们是 C# 新用户的很大一部分)。

于 2013-01-09T09:46:40.423 回答
0

因为在某些情况下,您应该指定 a 的可能值,而不是条件。

于 2013-01-09T09:43:48.477 回答