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

标签 c gcc switch-statement gnu

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

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

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

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

最佳答案

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; 
} 

编辑:回答评论。
如果您有太多案例,那么您可能需要考虑将 switch-case 替换为 if-else 结构。它可以更清晰、简洁和可读。

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

关于将 GNU case 范围扩展转换为标准 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9922837/

相关文章:

c - 在 C 中使用终端列格式化输出

c - getchar() 循环不会无故结束

c++ - 未声明未使用的变量。 gcc 取笑我?

c - 是否有一个编译器选项可用于将堆栈变量初始化为非零值(毒药)以帮助调试?

c - 如果我不在 switch case 中写 default 怎么办?

c - 为什么uboot的入口文件是用汇编写的?

c++ - 有没有办法在运行时用 C 或 C++ 编译附加代码?

c++ - 在gcc linux x86-64 C++中有效的指针是什么?

python - 另一个具有功能的开关盒

java - 让用户创建多个对象