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.