你们都熟悉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 6n", arr[i]);
break;
case 19 ... 20:
printf("%d in range 19 to 20n", arr[i]);
break;
default:
printf("%d not in rangen", 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 数组程序。 错误条件:
- low > high :编译器给出错误信息。
- 重叠case值:如果案例标签的值在 switch 语句中已经使用的案例范围内,编译器会给出错误消息。