Creation d'un type boolean en C

nicky200320 Messages postés 7 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 10 avril 2008 - 10 juin 2007 à 12:06
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 - 12 juin 2007 à 15:02
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 juin 2007 à 12:28
Tu pourrais expliquer l'utilité par rapport à un simple int ?

ciao...
BruNews, MVP VC++
0
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
10 juin 2007 à 12:55
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
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 25
10 juin 2007 à 16:31
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...
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
11 juin 2007 à 13:58
bool var1;    ==> c'est pas du C ?

Loki
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 juin 2007 à 16:29
Non.

C++ (@++)<!--
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
11 juin 2007 à 17:02
mais encore ?

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

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

Neo_Fr
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 juin 2007 à 14:57
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++ (@++)<!--
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
12 juin 2007 à 15:02
je suis d'accord avec SAKingdom sur ce dernier point

Loki
0
Rejoignez-nous