【发布时间】:2017-03-30 12:26:26
【问题描述】:
我希望能够设置或清除 uintX_t t 的(多个)位。
i 是一个运行时变量 (uintX_t)。
b 是一个运行时变量 (uintX_t),它被限制为 0 或 1。
mask 是编译时常量。
有没有更好的办法:
i = b ? (i | mask) : (i & ~mask)
如果可能的话,我希望避免分支。目标是 ARM,如果重要的话。
【问题讨论】:
-
i = b或i == b? -
@HongOoi
i = (b ? (i | mask) : (i & ~mask))
标签: c bit-manipulation ternary-operator