Sabe-se que para a linguagem C tudo o que tiver valor 0 é falso e tudo o que for diferente de 0 é verdadeiro.
Para fins de demonstração recorrerei a dois exemplos.
O primeiro exemplo apresenta o valor numérico de duas expressões lógicas, uma verdadeira e outra falsa.
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char *argv[])
005: {
006: char sexo = 'F';
007:
008: printf("sexo igual a F: %d\n", sexo == 'F');
009: printf("sexo igual a M: %d\n", sexo == 'M');
010: system("PAUSE");
011: return 0;
012: }
A saída produzida pelo programa deve ser
sexo igual a F: 1
sexo igual a M: 0
Como o sexo vale F, quando é feita a relação entre sexo e M, o resultado é falso(0). Quando a relação é estabelecida entre sexo e F, o resultado é verdadeiro (diferente de 0, nesse caso 1).
O segundo exemplo é para provar que valores diferentes de zero são considerados verdadeiros.
A estrutura de decisão if (se) avalia uma variável ou expressão e decide se executará seu bloco verdade ou seu bloco falsidade.
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char *argv[])
005: {
006: int valor;
008:
009: printf("Digite um valor inteiro: ");
010: fflush(stdin);scanf("%d", &valor);
011: if(valor)
012: {
013: printf("Valor diferente de zero: %d\n", valor);
014: }
015: else
016: {
017: printf("Valor igual a zero: %d\n", valor);
018: }
019: system("PAUSE");
020: return 0;
021: }
Na execução do programa, se você digitar 0, a saída do programa é
Valor igual a zero: 0
ou seja a instrução if (valor), pode ser traduzida para if(0), ou ainda, em português estruturado se falso então. Isso sempre executara o bloco else do if.
Quando você digita um valor diferente de zero, suponha 5, a saída esperada é
Valor diferente de zero: 5
então a instrução if (valor), é equivalente a if (5), que equivale a se verdade então.
Espero que as demonstrações sejam suficientes para você guardar que 0 é falso e diferente de zero é verdadeiro. :-D