As explained in [this article][1], the values `false` and `true` should not be confused with the integers 0 and 1, but may be identified with the elements of the Galois field (finite field) of two elements (see [here][2]).
A field is a set with two operations that satisfy certain axioms.
The symbols 0 and 1 are conventionally used to denote the additive and multiplicative identities of a field because the real numbers are also a field (but not a finite one) whose identities are the numbers 0 and 1.
The additive identity is the element 0 of the field, such that for all x:
x + 0 = 0 + x = x
and the multiplicative identity is the element 1 of the field, such that for all x:
x * 1 = 1 * x = x
The finite field of two elements has only these two elements, namely the additive identity 0 (or `false`), and the multiplicative identity 1 (or `true`).
The two operations of this field are the logical XOR (+) and the logical AND (*).
Regarding the C functions:
- Many functions return an integer that is an error code. 0 means NO ERROR.
- Intuitively, the function `strcmp` computes the difference between two strings. 0 means that there is no difference between two strings, i.e. that two strings are equal.
Not understanding these conventions seems like an RTFM problem to me: all one has to do is look at the library documentation.
[1]: http://en.wikipedia.org/wiki/Boolean_algebra_%28introduction%29
[2]: http://en.wikipedia.org/wiki/GF%282%29