C++ 中布尔值的运算符 |=

2024-03-16

我偶然发现了 C++ 中的以下构造:

bool result = false;
for(int i = 0; i<n; i++){
  result |= TryAndDoSomething(i);
}

我以为这个|=是 OR 运算符的快捷方式,并且result将等于true最后如果至少其中一个调用TryAndDoSomething已经回来了true.

但现在我想知道是否有多个调用实际上可以返回true。事实上,如果我们将操作扩展为:

result = result || TryAndDoSomething(i);

那么只有当 return 计算结果为时才会调用该方法false,也就是说,如果之前没有其他调用返回true。因此,在一个电话返回后true,不会进行其他调用。

这是正确的解释吗?


It's 按位或 https://en.wikipedia.org/wiki/Bitwise_operation分配,而不是短路或评估。

它相当于:

result = result | TryAndDoSomething(i);

Not:

result = result || TryAndDoSomething(i);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中布尔值的运算符 |= 的相关文章

随机推荐