In C++ (§4.5/4):
An rvalue of type bool can be
converted to an rvalue of type int,
with false becoming zero and true
In C, when a value is converted to
_Bool, it becomes 0 or 1 (§22.214.171.124/1):
When any scalar value is converted to
_Bool, the result is 0 if the value compares equal to 0; otherwise, the
result is 1.
When converting to
int, it’s pretty straight-forward.
int can hold 0 and 1, so there’s no change in value (§126.96.36.199).