case后可以加...范围

首先一般来说,教科书或者大部分资料都是说case后面只能接整型常量或常量表达式。也确实在标准C中确实不能接范围表达式。

但是在开发中却碰见了case 1 … 3 (省略号两侧有空格)这种接范围的用法。

经查询可知,GNU C对标准作了扩展,支持case后接一个范围值。 具体可点击 Case Ranges 查看。
 

例子如下:

#include 

void main ()
{
    int a;
    printf("请输入一个数字\n");
    scanf("%d",&a);
    int m;
    if (a < 100)
    {
        switch (a)
        {
            case 30 ... 39:
                m = 2;
                break;
            case 40 ... 49:
                m = 3;
                break;
            case 50 ... 59:
                m = 4;
                break;
            default:
                m = 5;
                break;
        }
    }
    else
    {
        m = 1;
    }

    printf("m = %d\n",m);
}

你可能感兴趣的:(c语言)