Comment utiliser le type de données booléen en C?

J'écrivais juste du code en C et il s'avère qu'il n'a pas de type de données booléen/booléen. Y a-t-il une bibliothèque C que je peux inclure pour me donner la possibilité de retourner un type de données booléen/booléen?

41
demandé sur Community 2010-11-12 01:04:24

7 réponses

Si vous avez un compilateur qui prend en charge C99 vous pouvez

#include <stdbool.h>

Sinon, vous pouvez définir le vôtre si vous le souhaitez. Selon la façon dont vous voulez l'utiliser (et si vous voulez pouvoir compiler votre code EN C++), votre implémentation pourrait être aussi simple que:

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

À mon avis, cependant, vous pouvez aussi bien utiliser {[2] } et utiliser zéro pour signifier faux et non nul pour signifier vrai. C'est comme ça que c'est habituellement fait en C.

62
répondu James McNellis 2010-11-11 22:05:58

C99 a un type de données booléen, en fait, mais si vous devez utiliser des versions plus anciennes, définissez simplement un type:

typedef enum {false=0, true=1} bool;
17
répondu caveman 2010-11-11 22:08:08

C99 a un type bool. Pour l'utiliser,

#include <stdbool.h>
3
répondu kavya 2016-08-10 13:11:54

Comme alternative à la réponse de James McNellis, j'essaie toujours d'utiliser l'énumération pour le type bool au lieu des macros: typedef enum bool {false=0; true=1;} bool;. Il est plus sûr b/c il permet au compilateur de vérifier le type et élimine les courses d'expansion de macro

1
répondu ysap 2010-11-11 22:10:07

C99 introduit {[1] } en tant que type booléen pur intrinsèque. Non #include S nécessaire:

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

Sur un vrai compilateur C99 (ou supérieur) conforme, le code ci-dessus devrait être parfaitement compilé.

0
répondu alk 2018-07-11 14:19:48

Nous pouvons utiliser le type enum pour cela.Nous n'avons pas besoin d'une bibliothèque. Par exemple

           enum {false,true};

La valeur de false est 0 et la valeur de true sera de 1.

0
répondu Sri Charan 2018-07-12 15:16:22
struct Bool {
    int true;
    int false;
}

int main() {

    /* bool is a variable of data type – bool*/
    struct Bool bool;

    /*below I’m accessing struct members through variable –bool*/ 
    bool = {1,0};
    print("Student Name is: %s", bool.true);
    return 0;
}
-1
répondu M.zar 2016-11-13 18:34:54