|是按位或。
|=表示将您的一个函数中返回的内容与 .bitwise OR一起使用result,然后将其存储到result. 这相当于做类似的事情:
result = result | callFunctionOne(sig);
以您的代码为例:
bool result;
result |= callFunctionOne(sig);
result |= callFunctionTwo(sig);
result |= callFunctionThree(sig);
result |= callFunctionFour(sig);
和你的逻辑
如果在函数中处理了参数 sig,则返回“true”,否则返回“false”;
这意味着如果您不定义结果,则默认为FALSE。
result = false;
callFunctionOne返回TRUE
result = result | callFunctionOne;
result等于TRUE。
result = false;
callFunctionOne返回 FALSE
result = result | callFunctionOne
结果等于 FALSE。
虽然看起来这是 a boolean OR,但它仍然使用bitwise OR本质上OR'ing是数字1或的0。
因此,假设它1等于 TRUE 并且0等于 FALSE,请记住你的真值表:
p q p ∨ q
T T T
T F T
F T T
F F F
现在,由于您一个接一个地调用每个函数,这意味着前一个函数的结果最终将决定callFunctionFour. 在那,四分之三的时间,它将是TRUE和四分之一的时间,它将是FALSE。