Maison > développement back-end > C++ > Comment C convertit-il implicitement les valeurs booléennes en entiers ?

Comment C convertit-il implicitement les valeurs booléennes en entiers ?

Susan Sarandon
Libérer: 2024-12-03 20:47:11
original
665 Les gens l'ont consulté

How Does C   Implicitly Convert Boolean Values to Integers?

Conversion implicite : transformation bool en int

En C , une conversion non intuitive se produit lors de l'attribution d'une expression booléenne à une variable int. Considérez l'extrait de code suivant :

int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);
Copier après la connexion

Détails de la conversion

Selon la norme C (§4.7/4 en C 11/14, §7.8/4 en C 17, §7.3.9/2 en C 20) :

  • La valeur booléenne false est implicitement converti en 0.
  • La valeur booléenne true est implicitement convertie en 1.

Par conséquent, dans le code donné, 4 < 5 est évalué à vrai, qui est converti en 1 et stocké dans x, tandis que 4 > 5 est évalué à false, qui est converti en 0 et stocké dans x.

Portabilité

Cette conversion implicite de bool en int est portable sur toutes les plateformes C.

Comparaison avec C

Contrairement à C , C ne prend pas explicitement en charge le type de données bool antérieur à la norme C99. Cependant, la norme C99 a introduit le type _Bool, qui équivaut à bool en C . En C99, les macros true et false se développent respectivement en constantes entières 1 et 0. En conséquence, le comportement de conversion bool en int est similaire en C et en C.

Conclusion

La conversion implicite bool en int dans le code donné est conforme à la norme et portable sur les plates-formes C. Bien que cela puisse paraître peu orthodoxe, cela est essentiel pour comprendre le comportement sous-jacent du langage C.

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