将GNU案例范围扩展转换为标准C

Ynv*_*Ynv 7 c gcc gnu switch-statement

GNU案例范围扩展允许在switch语句中使用case范围:

switch (value) {
    case 1 ... 8:
        printf("Hello, 1 to 8\n");
        break;
    default:
        printf("Hello, default\n");
        break;
}
Run Code Online (Sandbox Code Playgroud)

你会如何将其转换为标准C(c99或c89)?添加个案陈述?

编辑:具体如何处理非常大的switch语句?

Alo*_*ave 7

switch(value) 
{
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
        printf("Hello, 1 to 8\n"); 
        break;     
    default:         
        printf("Hello, default\n");         
        break; 
} 
Run Code Online (Sandbox Code Playgroud)

编辑:回答评论.
如果你有太多的情况下,那么你可能要考虑更换开关的情况下的if-else结构.它可以更清洁,简洁和可读.

if (value >=1 && value <= 8) 
{    
    printf("Hello, 1 to 8\n"); 
} 
else 
{   
    printf("Hello, default\n"); 
}  
Run Code Online (Sandbox Code Playgroud)

  • 我正在尝试更换一个案例32 ... 126::)这将是一个很长的转换声明...... (2认同)
  • @Ynv:为什么你没有在原始问题中提到所有细节?当您提出问题时,您应该发布所有相关详细信息,而不是选择性地,在答案涌入时透露它们。不一次性提供所有详细信息会使您原始问题的答案(包含隐瞒信息)变得无关紧要,并使它们看起来很愚蠢。 (2认同)