Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

the "|=" operator in c++

I have a question about "|=" in c++, how this operator works, for example:

bool result;

result |= callFunctionOne(sig);
result |= callFunctionTwo(sig);
result |= callFunctionThree(sig);
result |= callFunctionFour(sig);

and the function called above, will reutrn "true" if the paramater sig is processed in the function, otherwish, return "false";

the sig can be processed only in one function each time, how the "|=" works?


1 Answers

| is bitwise OR.

|= says take what is returned in one of your function and bitwise OR it with the result, then store it into result. It is the equivalent of doing something like:

result = result | callFunctionOne(sig);

Taking your code example:

bool result;

result |= callFunctionOne(sig);
result |= callFunctionTwo(sig);
result |= callFunctionThree(sig);
result |= callFunctionFour(sig);

and your logic of

will reutrn "true" if the paramater sig is processed in the function, otherwish, return "false";

So that means that if you don't define result, it will be by default FALSE.

result = false;

callFunctionOne returns TRUE

result = result | callFunctionOne;

result equals TRUE.

result = false;

callFunctionOne returns FALSE

result = result | callFunctionOne

result equals FALSE.

While it may seem that this is a boolean OR, it still is using the bitwise OR which is essentially OR'ing the number 1 or 0.

So given that 1 is equal to TRUE and 0 is equal to FALSE, remember your truth tables:

p   q   p ∨ q
T   T   T
T   F   T
F   T   T
F   F   F

Now, since you call each function after another, that means the result of a previous function will ultimately determine the final result from callFunctionFour. In that, three-quarters of the time, it will be TRUE and one-quarter of the time, it will be FALSE.

like image 141
2 revs0A0D Avatar answered Jan 20 '26 10:01

2 revs0A0D