Maison >développement back-end >C++ >La conversion Bool en Int est-elle toujours 0 ou 1 en C et C ?
Conversion booléenne en Int : garantie d'être 0 ou 1 ?
Dans les langages de programmation comme C et C, bool est couramment utilisé pour représenter valeurs booléennes de vrai et faux. Cependant, en arrière-plan, ces valeurs sont souvent stockées sous forme d’entiers. Cela soulève la question : lorsqu'un bool est converti en int, le résultat est-il garanti être 0 ou 1 ?
C
En C , la réponse est un oui catégorique. Selon la norme C (§4.5/4), "Une rvalue de type bool peut être convertie en une rvalue de type int, false devenant zéro et true devenant un." Cela signifie que lorsqu'un bool est converti en int en C , le résultat sera toujours 0 ou 1.
C
En C, la situation est légèrement différente mais tout aussi clair. Selon la norme C (§6.3.1.2/1), "Lorsqu'une valeur scalaire est convertie en _Bool, le résultat est 0 si la valeur est égale à 0 ; sinon, le résultat est 1." Cela implique que lorsqu'un bool (représenté par _Bool en C) est converti en int, le résultat sera à nouveau 0 ou 1.
Exemple pratique
Pour illustrer ce comportement dans le code :
int a = 2; bool b = a; int c = 3 + b; // 4
Dans cet exemple, la variable booléenne b est initialisée à la valeur de int a (qui est 2), mais comme les valeurs booléennes sont stockées sous la forme 0 ou 1, b devient 1 . L'ajout ultérieur de 3 entraîne l'attribution à c de la valeur 4. Cela confirme que bool est converti en int comme 1, garantissant un résultat de 0 ou 1.
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!