Maison >développement back-end >C++ >La conversion Bool en Int est-elle toujours 0 ou 1 en C et C ?

La conversion Bool en Int est-elle toujours 0 ou 1 en C et C ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-15 08:41:03439parcourir

Is Bool Conversion to Int Always 0 or 1 in C   and 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!

Déclaration:
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