Maison > développement back-end > C++ > La conversion de bool en int est-elle garantie à 0 ou 1 ?

La conversion de bool en int est-elle garantie à 0 ou 1 ?

DDD
Libérer: 2024-11-15 09:42:02
original
375 Les gens l'ont consulté

Is bool Conversion to int Guaranteed to Be 0 or 1?

bool Conversion en int : garanti d'être 0 ou 1 ?

Question :

De nombreux compilateurs semblent stocker bool les valeurs sont 0 ou 1, mais ce comportement est-il garanti ? Plus précisément, dans l'extrait suivant :

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

Réponse :

Oui, les valeurs booléennes sont garanties d'être converties en 0 ou 1 lorsqu'elles sont converties en int. Ce comportement est défini à la fois dans les standards C et C :

C (§4.5/4) :

Une rvalue de type bool peut être convertie en une rvalue de tapez int, avec false devenant zéro et true devenant un.

C (§6.3.1.2/1) :

Lorsqu'une valeur scalaire est convertie en _Bool, le le résultat est 0 si la valeur est égale à 0 ; sinon, le résultat est 1.

Par conséquent, dans l'exemple donné, b sera converti soit en 0 (si a n'est pas égal à 0), soit en 1 (si a est égal à 0). Ajouter 3 à b donnera 4 ou 5, selon la valeur de a.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal