Because the math works.
FALSE OR TRUE is TRUE, because 0 | 1 is 1. ... insert many other examples here. Traditionally, C programs have conditions like
if (someFunctionReturningANumber()) if (someFunctionReturningANumber()) rather than
if (someFunctionReturningANumber() != 0) if (someFunctionReturningANumber() != 0) because the concept of zero being equivalent to false is well-understood.