El estándar C (C89) no define el tipo booleano. Si usas true y false, aparecerá el siguiente error:
infinite.c:5:12: error: use of undeclared identifier 'true'
while (true) {
1 error generated.
make: *** [infinite] Error 1
Podemos configurarlo con la ayuda de las definiciones de macros en C:
//Definición de macro del tipo booleano
#define BOOL int
#define TRUE 1
#define FALSE 0
//Definir una variable booleana
BOOL flag = FALSE;
También se puede definir mediante una enumeración:
typedef enum
{
true=1, false=0
}bool;
Ejemplo
#include <stdio.h>
//Calcular n!, el valor de n se define en main
int main(void)
{
int n = 10; //Calcular el factorial
int sum = 1; //Se usa para almacenar el resultado del factorial
typedef enum
{
true=1, false=0
}bool;
bool flag = false; //Marca del factorial
int num = n; //Número de iteraciones
while( !flag )
{
sum = sum * (num--);
//Cuando num=1, termina el bucle
if( num == 1)
{
flag = true;
}
}
printf ("El valor factorial de %d es %d\n", n, sum);
return 0;
}
El resultado de salida es:
10的叠乘值为 3628800
C99 también proporciona un archivo de cabecera <stdbool.h> que define bool como _Bool, true como 1 y false como 0. Solo necesitas incluir stdbool.h para manipular fácilmente el tipo booleano.
Ejemplo
//Incluir stdbool.h para usar el tipo booleano
#include <stdbool.h>
#include <stdio.h>
//Calcular n!, el valor de n se define en main
int main(void)
{
int n = 10; //Calcular el factorial
int sum = 1; //Se usa para almacenar el resultado del factorial
bool flag = false; //Marca del factorial
int num = n; //Número de iteraciones
while( !flag )
{
sum = sum * (num--);
//Cuando num=1, termina el bucle
if( num == 1)
{
flag = true;
}
}
printf ("El valor factorial de %d es %d\n", n, sum);
return 0;
}
El resultado de salida es:
10的叠乘值为 3628800