大家都熟悉C / C++中的switch case,但是您是否知道可以在case语句中使用数字范围而不是单个数字或字符。
- 这是GNU C编译器而不是标准C或C++的大小写范围扩展
- 您可以在单个大小写标签中指定一系列连续值,如下所示:
case low ... high:
- 它可以用于如下范围的ASCII字符代码:
case 'A' ... 'Z':
- 您需要在椭圆周围写空格… 。例如,编写以下代码:
// Correct - case 1 ... 5:
// Wrong - case 1...5:
CPP
// C program to illustrate
// using range in switch case
#include
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数组的程序。
错误条件:
- 低>高:编译器给出错误消息。
- 重叠大小写值:如果大小写标签的值在switch语句中已经使用的大小写范围内,则编译器会给出错误消息。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。