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