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.