【问题标题】:Choosing enum element using "..." [duplicate]使用“...”选择枚举元素 [重复]
【发布时间】:2016-05-19 08:45:37
【问题描述】:

'...' 符号是 c 语言关键字吗?

代码:

#include <stdio.h>

typedef enum {
    A=0,B,C,D,E,F,G,H,I,J,K,M
} alpha;


int main(int argc, char const *argv[])
{


    alpha table = C;

    switch (table)
    {
        case A ... D:
        /* I have never seen "..." grammar in textbook */
            printf("Oh my god\n");
            break;
        default:
            printf("default\n");
            break;
    }
    return 0;
}

C 中是否允许... 用于范围?

【问题讨论】:

  • 我认为它是 gcc 编译器特有的,但我不确定。

标签: c enums switch-statement


【解决方案1】:

它不是标准 C,而是 GCC 扩展:

您可以在单个 case 标签中指定一系列连续值,如下所示:

case low ... high:

这与适当数量的单个案例标签具有相同的效果,从低到高的每个整数值都有一个标签。

更多内容在GCC extension: Case ranges

【讨论】:

    【解决方案2】:

    这称为案例范围。不,这不是标准的 C 功能。

    它被实现为gcc extension。这只是使用fall-through case statement 的另一种方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多