Skip to content

GNU 扩展的 switch 标签语法

字数: 0 字 阅读时间: 0 分钟

在使用 switch-case 时,怎么判断范围?比如判断字符 A-Z ,你可能会用 if (ch >= 'A' && ch <= 'Z') {} ,这也不是不行。但是 switch-case 看上去就比 if-else 更优雅。

GNU 允许我们可以 case 范围,这样就实现了优雅的范围判断:

C
#include <stdio.h>

int main(void) {
    char ch;
    ch = getchar();

    switch (ch) {
        case '0' ... '9': {
            puts("Number\n");
        } break;

        case 'a' ... 'z': {
            puts("Lowercase");
        } break;

        case 'A' ... 'Z': {
            puts("Uppercase\n");
        } break;
    }

    return 0;
}

Powered by VitePress, deployed by Github & Vercel.