我有一个值
int x
,我想有条件地添加(例如)一个值 int y
,具体取决于 bool c
。我可以写这样的代码:
if (c)
x += y;
没有分支我怎么能写这个?
从布尔值按位与创建一个掩码,然后添加:
x += -(int)c&y;
这样,如果布尔值为假,则该值仍为 0,并且按位与 0 与任何数字都会得到 0,因此这将导致该值加 0。否则,对
true
求反将得到 -1
,它在 2 的补码中全为 1,这将按位返回 y
,并将 y
添加到 x
;