繁体   English   中英

在同一个switch语句中执行多个case

[英]Execution of multiple cases within the same switch statement

我正在查看某人的C代码,并发现了一些我甚至不知道可能的东西。 在某些情况下,修改了switch变量,意图在中断后执行另一个 case。

该开关位于中断处理程序内部,因此将重复调用它。

switch (variable)
{
    case 1:
        some_code();
        variable = 3;
        break;

    case 2:
        more_code();
        variable = 5;
        break;

    case 3:
        more_code();
        variable = 5;
        break;

    case 4:
        my_code();
        break;

    case 5:
        final_code();
        break;

}

该代码似乎与作者的意图一致。

这是C中的保证行为吗? 我总是假设break语句会导致执行在switch语句之后直接跳转到。 我不希望它继续测试其他所有情况。

这是状态机类型代码的常用技术。 但它不像你想象的那样自动跳跃。 switch语句必须放在while循环中。 在这种情况下,我想环路看起来像:

while (!done) {
    done = (variable == 5);
    switch (variable) {
    /*...*/
    }
}

或者, switch语句可以在函数体内,并且从循环调用该函数,直到满足完成条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM