[Solved] Why is this boolean variable assigned true?


As you can see here, the | operator has a higher precedence than the assignment operator =. Therefore, when you don’t wrap (a = false) in parentheses :

if (a = false | (b = false) || (c = true) | (d = true))

is equivalent to

if (a = (false | (b = false) || (c = true) | (d = true)))

so you are assigning true to a.

On the other hand, in

if ((a = false) | (b = false) || (c = true) | (d = true))

you are assigning false to a.

solved Why is this boolean variable assigned true?