Not strictly a boolean type

The boolean type named bool is not strictly a boolean type.

You can initialize it using the literal values true and false.

You can also initialize it with a numeric value where 0 represents false and any non-zero numeric value represents true.

Also, it is possible to perform arithmetic using a variable of type bool but you need to be very careful in this regard.  If the variable was initialized using a non-zero numeric value with a fractional part, the arithmetic results are likely to something other than what you might expect.