
Envoyé par
yan
Oui et non car tu peux l'utiliser dans un calcule mathématique et la
true <==> 1
false <==> 0
Hé non, su moins, rien n'est garanti au niveau de true!!!
Tu as la garantie que false == 0, mais true vaut... tout ce qui ne vaut pas false (donc, potentiellement toute valeur utile pour n'importe quel type numérique donné
)
Ce qui est surprenant, par exemple, c'est que le code
1 2 3 4 5
|
bool test= false;
std::cout<<std::boolalpha<<test<<std::endl;
test++;
std::cout<<std::boolalpha<<test<<std::endl; |
compile et fonctionne (du moins avec gcc) sans le moindre problème (grâce, sans doute, à la conversion implicite qu'il occasionne
).
Tu peux d'ailleurs invoquer autant de fois l'opérateur ++ que tu le souhaites
.
Alors que si tu essaye de compiler le code
1 2 3 4 5
|
bool test= false;
std::cout<<std::boolalpha<<test<<std::endl;
test--;
std::cout<<std::boolalpha<<test<<std::endl; |
la compilation échoue avec comme message
invalid use of Boolean expression as operand to 'operator--'
Partager