I've seen a compiler on Ubuntu which sends 0xff as true. If that was casted to a signed char, that would be negative and this wouldn't work. I want to ensure that doesn't happen.
Values of type bool are either true or false. Values of type bool participate in integral promotions.
A prvalue of type bool can be converted to a prvalue of type int, with false becoming zero and true becoming one.
Note: These conversions are called integral promotions.
Note: Using a bool value in ways described by this International Standard as "undefined," such as by examining the value of an uninitialized automatic object, might cause it to behave as if it is neither true nor false.