¿Los valores Bool son solo 0 y 1?

El lenguaje C estándar y estricto no tiene datos lógicos, es decir, no hay ningún tipo bool, 0 representa falso y distinto de cero representa verdadero.

Otros idiomas son diferentes y representan cosas ligeramente diferentes. Por ejemplo, en C++, si se define un dato X de tipo Bool y se le asigna un dato distinto de cero (como 'a', como 100, etc.), significa que X es verdadero. Si genera el valor de Cuando se almacena en X, eventualmente se convertirán en dos valores: 0 y 1.