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