Creation d'un type boolean en C

Signaler
Messages postés
7
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
10 avril 2008
-
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
-
Bonjour a tous,
quelqu'un pourrait il m'aider a creer un boolean en C.
J'ai utilisé jusqu'à maintenant du C++.
Le type boolean existait deja.
Mais en C, ce n'est pas le cas.
Je ne sais pas si on est obligé de passer par une structure, mais je voudrais un truc du genre :
#ifndef hello
#define hello


enum bool
{
 TRUE,
 FALSE
};
#endif
avec appel de fichier .h
Merci de votre aide
Nicky200320

10 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Tu pourrais expliquer l'utilité par rapport à un simple int ?

ciao...
BruNews, MVP VC++
Messages postés
178
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
25 août 2010
1
Vu que le C ne contrôle pas les valeurs que tu peux affecter à une variable de type enum, autant comme le préconise BruNews utiliser un bon vieux int et les macros TRUE/FALSE déha existantes...
sinon si tu est allergique aux macros et que tu tiennes absolument à faire figure littéralement 'true' et 'false', tu peux les déclarer comme un enum ;

enum{ false, true};  ce qui est la même chose d'un #define false 0 et #define true 1
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
Je sais pas si ça sert à quelquechose mais quant j'ai beaucoup de booleens à gérer, je les mets en structure de bits sur 1 octet :

struct BOOLS_TAG
{
    BYTE b1   : 1;
    BYTE b2   : 1;
    BYTE b3   : 1;
    BYTE b4   : 1;
    BYTE b5   : 1;
    BYTE b6   : 1;


}BOOLS = {0, 0, 1, 0, 1, 1};

// (...)

if( BOOLS.b1 == FALSE ) 
   BOOLS.b3 = TRUE;

J'image qu'il faut gérer l'alignement avec un #pragma pour que cela soit vraiment efficace, mais bon...
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
bool var1;    ==> c'est pas du C ?

Loki
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Non.

C++ (@++)<!--
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
mais encore ?

Loki
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
bool n'existe pas en C. Il a été ajouté au C++.

C++ (@++)<!--
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
cher moi en c ca marche:
BOOL essai = FALSE;
if(...) essai = TRUE;

Neo_Fr
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
bool et BOOL, ce n'est pas la même chose
bool est un type de données avec un poids d'un octet si ma mémoire est bonne.
BOOL est une macro. Il ne s'agit en fait que d'un int.

C++ (@++)<!--
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
je suis d'accord avec SAKingdom sur ce dernier point

Loki