c - C 中的 switch 语句 : variable in case?

标签 c switch-statement compiler-construction

#include <stdio.h>
int main(int argc, char *argv[]){
    char a = 'c';
    switch('c'){
        case a:
            printf("hi\n");
    }
    return 0;
}

上面的代码不会因为这个错误而编译:

case label does not reduce to an integer constant

为什么不允许这样做?

最佳答案

明确允许编译器使用高效的二叉树或跳转表来评估 case 语句。

因此,case 语句是编译时常量。

关于c - C 中的 switch 语句 : variable in case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7050920/

相关文章:

比较预处理器宏是否相等

c - 从 C 中的大结构中获取子结构

c - C中十六进制字符串到int的转换

c - 什么是 intel 机器中的 VIctim 缓存?我们可以禁用它吗?

c - 在 switch 语句中声明和初始化的变量

parsing - 傻瓜的解析器和编译器。从哪儿开始?

c# - switch 语句中的这个变量如何在没有声明的情况下看似使用?

javascript - 如何将switch语句中的模板字符串与js匹配?

.net - .NET 如何解析类型?

c++ - silence -Wparentheses-相等错误