在 C++ 中是否有任何理由不使用按位运算符 &、| 和 ^ 来表示“bool”值?
有时我会遇到这样的情况:我希望两个条件之一恰好为真(XOR),所以我只是将 ^ 运算符放入条件表达式中。有时我还希望对条件的所有部分进行评估,无论结果是否为真(而不是短路),因此我使用 & 和 |。有时我还需要积累布尔值,&=和|=可能非常有用。
当我这样做时,有些人感到惊讶,但代码仍然比其他方式更有意义和更清晰。有什么理由不将它们用于布尔值吗?是否有任何现代编译器会给出不好的结果?
||
and &&
是布尔运算符,内置运算符保证返回true
or false
。没有其他的。
|
, &
and ^
是按位运算符。当您操作的数字域只是 1 和 0 时,它们是完全相同的,但如果您的布尔值不严格是 1 和 0(如 C 语言的情况),您可能会出现一些行为你不想要。例如:
BOOL two = 2;
BOOL one = 1;
BOOL and = two & one; //and = 0
BOOL cand = two && one; //cand = 1
然而,在 C++ 中,bool
类型保证只能是true
or a false
(分别隐式转换为1
and 0
),因此从这种立场来看,不必担心,但人们不习惯在代码中看到此类内容,这一事实为不这样做提供了一个很好的理由。说啊b = b && x
并完成它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)