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

如何实现仅切换操作符的位标志条件添加/移除单行写法?

可行实现方案

首先纠正一个关键细节:移除标志的正确操作应该是 flags &= ~EFlags::FLAG(而非直接&= EFlags::FLAG,后者是保留该标志位,并非移除)。

针对你希望**flags左、EFlags::FLAG右,仅通过三元逻辑切换运算行为**的需求,C++不支持直接将运算符作为三元表达式的返回值,但可以通过构造统一的运算表达式实现结构一致的单行代码:

flags = b_condition ? (flags | EFlags::FLAG) : (flags & ~EFlags::FLAG);

方案优势

  • 结构高度统一:18行代码格式完全一致,均为flags = [条件] ? (flags | 目标标志) : (flags & ~目标标志);,可读性大幅提升
  • 无需函数封装:直接通过原生位运算实现,无额外函数调用开销
  • 逻辑直观:一眼就能明确条件为真时添加标志(位或操作),条件为假时移除标志(位与取反操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:59:54