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