Test sur boolen

Signaler
Messages postés
1
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
9 mars 2007
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
bonjour,

comment tester si une variable est booleene ?
existe t-il une fonction du style isnan mais pour les booleens ?

merci

8 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Évalue la taille de la variable avec sizeof. Si la taille est de 1, il s'agit d'un bool ou d'un char.

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Cependant, si la variable est entré par l'utilisateur (sous forme numérique) et donc est sous format ASCII, il faut tester:
if(variable '1' || variable '0')
    ...

C++ (@++)<!--
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
La question n'a pas de sens.
Une variable de 1 octet n'est pas plus un booléen qu'une variable de 4 octets (en Win32, BOOL==int par exemple).

En plus c'est pas le genre de choses qu'on teste à l'exécution.
Pour les flottants ca aurait un sens, puisqu'une valeur est réservée pour NaN, mais pour un booleen non...

J'aimerais bien voir dans quel contexte tu penses avoir besoin de faire ca

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
C'est fou ce qu'il peut y avoir de faux concepts ancrés dans les esprits.

On peut tester le non zéro partant de nimporte quoi donc tout peut être regardé comme boolean.
Privilégiez d'ailleurs le int au bool du C++, vous y gagnerez en vitesse comme en taille de code.

ciao...
BruNews, MVP VC++
Messages postés
55
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 novembre 2008

salut
A ce que j'ai compris, tu peus faire ainsi :
#include <typeinfo>
#include
#include<string.h>

void main()
{   
   
    bool a;

    if(!strcmp(typeid(a).name(),"bool"))
        cout << "c'est un " << typeid(a).name() << endl;
    else
        cout << "ce n'est pas un bool" << endl;

}
Il fallait juste voir ce lien dans le site : [codes/RECONNAISSANCE-TYPES-OBJETS-CPLUSPLUS_35631.aspx http://www.cppfrance.com/codes/RECONNAISSANCE-TYPES-OBJETS-CPLUSPLUS_35631.aspx]
 @ +
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Je ne fesais que répondre à la question (un bool fait bien 1 octet non ?)
Moi, dans mon esprit, variable veut dire -> bool value;
Question pas claire == réponse pas claire

Faudrait savoir ce qu'il veut dire par variable, car en effet, c'est inutile de savoir si une variable est d'un type ou d'un autre directement dans le code. C'est toi qui l'a codé alors si tu sais pas ça...

Si c'est à la saisi de l'utilisateur, faut voir ce qu'il veut entré. Si c'est des 1 ou des 0:
if(value == '1')
else if(value == '0')
else

ou directement en numérique
if(value == 1)
else if(!value)
else

Pour les "true" "false", on peut utiliser des strcmp.

En gros, il s'agit simplement de limiter les entrés que peut faire l'utilisateur pas d'évaluer si il s'agit du bool ou non.

C++ (@++)<!--
Messages postés
55
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 novembre 2008

salut
moi je suis parti de ça : existe t-il une fonction du style isnan mais pour les booleens ?
donc il ne veus que savoir le type et pas la valeur.
@++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour moi, c'est comme s'il demandait s'il existe une fonction du style "est-ce que ma variable s'appelle x"? Je vois pas a quoi ca pourrait servir.

_____________________________________
Un éditeur de ressources gratuit pour Windows