我遇到过像这样的代码,这让我感到畏缩:
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
是否会在某些情况下导致布尔值出现问题。
答案 0 :(得分:1)
这是完全正确的。复合运算符a |= b
表示a = a | b
,因此isEventSent |= m_SendToSubscribers(event);
表示isEventSent = isEventSent | m_SendToSubscribers(event);
。单个运算符(=
和|
)都已为bool
定义良好。
答案 1 :(得分:0)
完全安全。 a | = b大致相当于做a = a |湾