You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++ switch语句中跳过指定case并从目标case执行?

高效实现方案:使用goto case直接跳转

针对你的场景,最直接且高效的方式就是在case 5的条件分支里用goto case 3;,完全匹配你的需求——99%的正常流程不受影响,仅触发特殊条件时跳过case 4:

switch (bits_remaining)
{
    case 5:
        if (CallFunction())
        {
            // 处理该条件的逻辑
            goto case 3; // 直接跳转到case3,跳过case4
        }
        else
        {
            // case5的常规代码
        }
        [[fallthrough]]; // 正常情况继续执行case4
    case 4:
        // case4的代码
        [[fallthrough]];
    case 3:
        // case3的代码
        [[fallthrough]];
    case 2:
        // case2的代码
        [[fallthrough]];
    case 1:
        // case1的代码
        [[fallthrough]];
}

为什么这个方案高效?

  • 99%的场景下,CallFunction()返回false,代码按正常贯穿逻辑执行,没有额外判断或跳转开销,完全保留原有性能。
  • 仅在1%的特殊场景下,通过goto case直接跳转到case3,跳转操作本身极快,不会引入性能损耗。

为什么不推荐其他方案?

  • 在case4中加跳过判断:会让99%的正常流程多一次条件判断,违背你对性能的要求。
  • 重排case顺序:会破坏bits_remaining从5到1递减的逻辑连贯性,增加代码维护成本。

内容的提问来源于stack exchange,提问作者The Welder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:52:33