A value of type bool can be converted implicitly to a value of type int, with false becoming zero, and true becoming one. For example:
bool b = false; int n = b; // n equals 0 b = true; double f = b; // f equals 1.0
Likewise, an arithmetic type, enumeration, pointer, or pointer to member can be converted to a value of type bool in the following manner: a zero value, null pointer, or null pointer to member is converted to false; any other value (including a negative value) is converted to true. For example:
void (A::*pmf)() = &A::f ; //pmf is a pointer to a member int n = -1; bool b = pmf; // b equals true because pmf is not null b = n; // b equals true b = NULL; // b equals false b = 9.99f; // b equals true