复合赋值给bool安全吗?

时间:2014-12-10 09:46:42

标签: c++ boolean assignment-operator

我遇到过像这样的代码,这让我感到畏缩:

bool isEventSent = false;

if(type >= EVENT_BEGIN && type < EVENT_END)
{
    isEventSent |= m_SendToSubscribers(event);
}

return isEventSent;

目的很明确,但我从未使用像这样的bool复合赋值,这让我感到不安。这段代码安全吗?如果不是,它会失败的情况会怎样?

修改

我知道a |= b相当于a = a | b,但我想知道a | b而不是a || b是否会在某些情况下导致布尔值出现问题。

2 个答案:

答案 0 :(得分:1)

这是完全正确的。复合运算符a |= b表示a = a | b,因此isEventSent |= m_SendToSubscribers(event);表示isEventSent = isEventSent | m_SendToSubscribers(event);。单个运算符(=|)都已为bool定义良好。

答案 1 :(得分:0)

完全安全。 a | = b大致相当于做a = a |湾