'A Reference Manual C 5th Ed.' 에 Boolean Type 에 대해서 다음과 같이 나와 있다.
C99 introduced the unsugned integer type _Bool, which can hold only the values 0 or 1 ("false" and "true", respectively). Other integer types can be used in boolean contexts (e.g., as the test in a conditional expression), but the use of _Bool may be clearer if the C implementation conforms to C99. When converting any scalar value to type _Bool, all nonzero values are converted to 1, while zero values are converted to 0.
The header file stdbool.h defines the macro bool to be a synonym for _Bool and defines false and true to be 0 and 1, respectively. The name bool is not a key-word to protec older C programs, which may have a user-defined type named bool. Conversions involving _Bool are described with the other integer conversions and promotions.
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
/* Supportingin C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif /* __cplusplus */
참고 : http://gcc.gnu.org/c99status.html