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
738 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!

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