在switch语句中使用enum类型

tom*_*afe 15 c enums switch-statement

如果检测到一些特殊情况,我正在使用switch语句提前从我的main函数返回.特殊情况使用枚举类型进行编码,如下所示.

typedef enum {
    NEG_INF,
    ZERO,
    POS_INF,
    NOT_SPECIAL
} extrema;

int main(){

    // ...

    extrema check = POS_INF;

    switch(check){
        NEG_INF: printf("neg inf"); return 1;
        ZERO: printf("zero"); return 2;
        POS_INF: printf("pos inf"); return 3;
        default: printf("not special"); break;
    }

    // ...

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我运行它时,字符串not special被打印到控制台,主要功能的其余部分继续执行.

如何让switch语句在这里正常运行?谢谢!

lda*_*v1s 20

没有case标签.你goto现在有标签了.尝试:

switch(check){
    case NEG_INF: printf("neg inf"); return 1;
    case ZERO: printf("zero"); return 2;
    case POS_INF: printf("pos inf"); return 3;
    default: printf("not special"); break;
}
Run Code Online (Sandbox Code Playgroud)

  • 哦。我的。上帝。我已经习惯了 Verilog,我都忘记了。该 C 代码是对我的一些 Verilog 项目的功能模拟。 (3认同)