La norme du langage C (C89) ne définit pas de type booléen. Si vous utilisez true et false, l'erreur suivante se produira :
infinite.c:5:12: error: use of undeclared identifier 'true'
while (true) {
1 error generated.
make: *** [infinite] Error 1
Nous pouvons utiliser des définitions de macros en langage C pour le configurer :
// Définition de macro pour le type booléen
#define BOOL int
#define TRUE 1
#define FALSE 0
// Définir une variable booléenne
BOOL flag = FALSE;
Il peut également être défini à l'aide d'un enum :
typedef enum
{
true=1, false=0
}bool;
Exemple
#include <stdio.h>
// Calculer n!, la valeur de n est définie dans main
int main(void)
{
int n = 10; // Calculer la factorielle
int sum = 1; // Utilisé pour stocker le résultat de la factorielle
typedef enum
{
true=1, false=0
}bool;
bool flag = false; // Marqueur de factorielle
int num = n; // Nombre d'itérations de la boucle
while( !flag )
{
sum = sum * (num--);
// Terminer la boucle quand num = 1
if( num == 1)
{
flag = true;
}
}
printf ("La valeur factorielle de %d est %d\n", n, sum);
return 0;
}
Le résultat de sortie est:
10的叠乘值为 3628800
C99 fournit également un fichier d'en-tête <stdbool.h> qui définit bool pour représenter _Bool, true pour représenter 1, et false pour représenter 0. Tant que vous incluez stdbool.h, vous pouvez facilement utiliser le type booléen.
Exemple
// Inclure stdbool.h pour utiliser le type booléen
#include <stdbool.h>
#include <stdio.h>
// Calculer n!, la valeur de n est définie dans main
int main(void)
{
int n = 10; // Calculer la factorielle
int sum = 1; // Utilisé pour stocker le résultat de la factorielle
bool flag = false; // Marqueur de factorielle
int num = n; // Nombre d'itérations de boucle
while( !flag )
{
sum = sum * (num--);
// Terminer la boucle quand num = 1
if( num == 1)
{
flag = true;
}
}
printf ("La valeur factorielle de %d est %d\n", n, sum);
return 0;
}
Le résultat de sortie est:
10的叠乘值为 3628800