Der C-Sprachstandard (C89) definiert keinen booleschen Typ. Wenn Sie true und false verwenden, tritt der folgende Fehler auf:
infinite.c:5:12: error: use of undeclared identifier 'true'
while (true) {
1 error generated.
make: *** [infinite] Error 1
Wir können es mit C-Makrodefinitionen festlegen:
// Makrodefinition für den booleschen Typ
#define BOOL int
#define TRUE 1
#define FALSE 0
// Definieren Sie eine boolesche Variable
BOOL flag = FALSE;
Es kann auch mit einem Enum definiert werden:
typedef enum
{
true=1, false=0
}bool;
Beispiel
#include <stdio.h>
// Berechne n!, der Wert von n ist in main definiert
int main(void)
{
int n = 10; // Berechne die Fakultätszahl
int sum = 1; // Dient zum Speichern des Fakultätsergebnisses
typedef enum
{
true=1, false=0
}bool;
bool flag = false; // Fakultätsmarkierung
int num = n; // Anzahl der Schleifeniterationen
while( !flag )
{
sum = sum * (num--);
// Beende die Schleife, wenn num = 1
if( num == 1)
{
flag = true;
}
}
printf ("Der Fakultätswert von %d ist %d\n", n, sum);
return 0;
}
Das Ausgabeergebnis ist:
10的叠乘值为 3628800
C99 bietet außerdem eine Header-Datei <stdbool.h>, die bool definiert, um _Bool darzustellen, true, um 1 darzustellen, und false, um 0 darzustellen. Solange Sie stdbool.h einbinden, können Sie problemlos mit dem booleschen Typ arbeiten.
Beispiel
// stdbool.h einbinden, um den booleschen Typ zu verwenden
#include <stdbool.h>
#include <stdio.h>
// Berechne n!, der Wert von n ist in main definiert
int main(void)
{
int n = 10; // Berechne die Fakultätszahl
int sum = 1; // Dient zum Speichern des Fakultätsergebnisses
bool flag = false; // Fakultätsmarkierung
int num = n; // Anzahl der Schleifeniterationen
while( !flag )
{
sum = sum * (num--);
// Beende die Schleife, wenn num = 1
if( num == 1)
{
flag = true;
}
}
printf ("Der Fakultätswert von %d ist %d\n", n, sum);
return 0;
}
Das Ausgabeergebnis ist:
10的叠乘值为 3628800