📜  在C / C++中的切换情况下使用范围

📅  最后修改于: 2021-05-26 00:33:30             🧑  作者: Mango

大家都熟悉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数组的程序。
错误条件:

  1. 低>高:编译器给出错误消息。
  2. 重叠大小写值:如果大小写标签的值在switch语句中已经使用的大小写范围内,则编译器会给出错误消息。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。