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

如何合并if语句中同一变量的多条件判断

合并多条件判断的几种实现方式

原代码片段:

if (i != 0 && i != 15 && i != 20)
{
    ...
}

下面提供几种无需多个!=运算符的实现方式:

  • 使用集合/哈希表判断
    把需要排除的数值放进集合,直接判断当前值是否不在集合内。这种方式可读性强,后续修改排除值也方便:

    #include <unordered_set>
    
    // 建议定义成全局或静态变量,避免重复创建集合的开销
    const std::unordered_set<int> exclude_nums = {0, 15, 20};
    if (exclude_nums.find(i) == exclude_nums.end()) {
        ...
    }
    

    如果是Java环境,写法类似:

    Set<Integer> excludeNums = new HashSet<>(Set.of(0, 15, 20));
    if (!excludeNums.contains(i)) {
        ...
    }
    
  • 位运算判断(仅适用于小范围非负整数)
    要是排除的数值都是较小的非负整数,可以用位掩码来实现。给每个排除值对应一个二进制位,将这些位设为1,然后判断当前值对应的位是否为0:

    const int exclude_mask = (1 << 0) | (1 << 15) | (1 << 20);
    if (!(exclude_mask & (1 << i))) {
        ...
    }
    

    注意:这种方法有局限性,数值不能超过所用整数类型的位宽(比如32位int的话,数值不能超过31),否则会出现溢出问题。

  • switch-case 分支处理
    利用switch的穿透特性,匹配到排除值时直接跳过,default分支执行原逻辑:

    switch(i) {
        case 0:
        case 15:
        case 20:
            break;
        default:
            // 原代码块的逻辑
            ...
            break;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:23:16