c ++中的"| ="运算符

2 c++ boolean-operations

我在c ++中有一个关于"| ="的问题,这个运算符是如何工作的,例如:

bool result;

result |= callFunctionOne(sig);
result |= callFunctionTwo(sig);
result |= callFunctionThree(sig);
result |= callFunctionFour(sig);
Run Code Online (Sandbox Code Playgroud)

如果在函数中处理了参数sig,则上面调用的函数将重新"true",另外,返回"false";

每次只能在一个函数中处理sig," |=" 如何工作?

小智 7

| 是按位OR.

|=说取你的一个函数返回bitwise OR的内容result,然后将其存储到result.这相当于做了以下事情:

result = result | callFunctionOne(sig);

以你的代码为例:

bool result;

result |= callFunctionOne(sig);
result |= callFunctionTwo(sig);
result |= callFunctionThree(sig);
result |= callFunctionFour(sig);
Run Code Online (Sandbox Code Playgroud)

和你的逻辑

如果在函数中处理了参数sig,则会将"true"重新设置为"true",另外,返回"false";

这意味着如果你没有定义结果,它将默认为FALSE.

result = false;
Run Code Online (Sandbox Code Playgroud)

callFunctionOne返回TRUE

result = result | callFunctionOne;
Run Code Online (Sandbox Code Playgroud)

result等于TRUE.

result = false;
Run Code Online (Sandbox Code Playgroud)

callFunctionOne 返回FALSE

result = result | callFunctionOne
Run Code Online (Sandbox Code Playgroud)

结果等于FALSE.

虽然看起来这是一个boolean OR,它仍然使用的bitwise OR本质上OR'ing是数字10.

因此,如果它1等于TRUE并且0等于FALSE,请记住您的真值表:

p   q   p ? q
T   T   T
T   F   T
F   T   T
F   F   F
Run Code Online (Sandbox Code Playgroud)

现在,由于您将每个函数调用到另一个函数,这意味着先前函数的结果将最终确定最终结果callFunctionFour.在那里,四分之三的时间,它将是真的,四分之一的时间,它将是假的.