Maison > développement back-end > C++ > La conversion d'un booléen en entier donne-t-elle toujours 0 ou 1 ?

La conversion d'un booléen en entier donne-t-elle toujours 0 ou 1 ?

Linda Hamilton
Libérer: 2024-12-01 03:39:19
original
426 Les gens l'ont consulté

Does Converting a Boolean to an Integer Always Result in 0 or 1?

Une valeur booléenne peut-elle toujours devenir zéro ou un lorsqu'elle est convertie en nombre entier ?

Lors de la conversion d'une valeur booléenne en nombre entier, de nombreux compilateurs semblent ne retenir que 0 ou 1, ce qui soulève des questions sur la fiabilité de ce comportement. Examinons un exemple :

int a = 2;
bool b = a;
int c = 3 + b; // What is the result? 4 or 5?
Copier après la connexion

Réponse : Oui, bool est garanti être 0 ou 1 lorsqu'il est converti en entier.

En C :

Le standard C (§4.5/4) déclare explicitement : "Une rvalue de type bool peut être converti en une rvalue de type int, false devenant zéro et true devenant un. 0 ou 1 (§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."

Lors de la conversion en int, le processus est simple car int peut contenir 0 et 1, il n'y a donc aucun changement de valeur (§6.3.1.3).

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal