1. 主页
  2. 文档
  3. C语言教程
  4. C语言控制语句
  5. 在 C/C++ 中的 switch case 中使用范围

在 C/C++ 中的 switch case 中使用范围

你们都熟悉C/C++ 中的switch case,但是你知道在 case 语句中可以使用数字范围而不是单个数字或字符。

  • 这是 GNU C 编译器的案例范围扩展,而不是标准 C 或 C++
  • 您可以在单个 case 标签中指定一系列连续值,如下所示:
case low ... high:
  • 它可用于 ASCII 字符代码的范围,如下所示:
case 'A' ... 'Z':
  • 您需要在椭圆周围写空格……。例如,这样写:
// Correct  -   case 1 ... 5:
// Wrong -    case 1...5:
// C program to illustrate
// using range in switch case
#include <stdio.h>
int main()
{
int arr[] = { 1, 5, 15, 20 };

for (int i = 0; i < 4; i++)
{
switch (arr[i])
{
case 1 ... 6:
printf("%d in range 1 to 6\n", arr[i]);
break;
case 19 ... 20:
printf("%d in range 19 to 20\n", arr[i]);
break;
default:
printf("%d not in range\n", arr[i]);
break;
}
}
return 0;
}

输出: 

1 in range 1 to 6
5 in range 1 to 6
15 not in range
20 in range 19 to 20

时间复杂度: O(n),其中 n 是数组 arr的大小。

空间复杂度: O(1)
练习:您可以通过修改 char 数组和 case 语句来尝试上面的 char 数组程序。
错误条件:

  1. low > high :编译器给出错误信息。
  2. 重叠case值:如果案例标签的值在 switch 语句中已经使用的案例范围内,编译器会给出错误消息。

 

这篇文章对您有用吗? 1