web-dev-qa-db-de.com

Wie verwende ich einen booleschen Datentyp in C?

Ich habe gerade Code in C geschrieben und es stellt sich heraus, dass es keinen Boolean/Bool-Datentyp gibt. Gibt es eine C-Bibliothek, die ich einbinden kann, um einen booleschen/bool-Datentyp zurückzugeben?

41
itsaboutcode

Wenn Sie einen Compiler haben, der C99 unterstützt, können Sie dies tun

#include <stdbool.h>

Ansonsten können Sie Ihre eigenen definieren, wenn Sie möchten. Je nachdem, wie Sie es verwenden möchten (und ob Sie Ihren Code als C++ kompilieren möchten), kann Ihre Implementierung so einfach sein wie:

#define bool int
#define true 1
#define false 0

Meiner Meinung nach können Sie jedoch auch einfach int verwenden und Null verwenden, um falsch zu bedeuten, und nicht Null, um wahr zu bedeuten. So wird es normalerweise in C gemacht.

65
James McNellis

C99 hat zwar einen booleschen Datentyp, aber wenn Sie ältere Versionen verwenden müssen, definieren Sie einfach einen Typ:

typedef enum {false=0, true=1} bool;
17
caveman

C99 hat einen bool-Typ. Um es zu benutzen,

#include <stdbool.h>
3
kavya

Als Alternative zu James McNellis Antwort versuche ich immer, die Aufzählung für den Bool-Typ anstelle von Makros zu verwenden: typedef enum bool {false=0; true=1;} bool;. Es ist sicherer, da der Compiler die Typprüfung durchführt und Makro-Erweiterungsrennen eliminiert

1
ysap

C99 führte _Bool als intrinsischen reinen Booleschen Typ ein. Kein #includes benötigt:

int main(void)
{
  _Bool b = 1;
  b = 0;
}

Bei einem echten C99-Compiler (oder höher) sollte der obige Code einwandfrei kompiliert werden.

0
alk

Wir können den Aufzählungstyp dafür verwenden. Wir benötigen keine Bibliothek . Zum Beispiel

           enum {false,true};

der Wert für false ist 0 und der Wert für true ist 1.

0
Sri Charan