Maison > développement back-end > C++ > La conversion Bool-to-Int est-elle portable en C et C ?

La conversion Bool-to-Int est-elle portable en C et C ?

Barbara Streisand
Libérer: 2024-12-06 02:50:15
original
181 Les gens l'ont consulté

Is Bool-to-Int Conversion Portable in C and C  ?

Conversion bool en 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

La question se pose : est-ce que cette conversion portable? Pouvons-nous garantir que les deux assertions réussissent ?

Réponse :

Oui, cette conversion est entièrement portable et conforme à la norme C. La conversion explicite de bool en int est implicite en C , telle que définie au §4.7/4 de la norme C 11 ou 14, et au §7.8/4 de la norme C 17.

Plus précisément, la norme stipule : "Si le type de source est booléen, la valeur false est convertie en zéro et la valeur true est convertie en un."

Par conséquent, dans le champ donné code :

  • 4< 5 est évalué à vrai, qui est implicitement converti en 1 et stocké dans x.
  • 4 > 5 est évalué à false, qui est implicitement converti en 0 et stocké dans x.

Remarque pour C :

En C, un type de données booléen n'est pas présent. Cependant, C99 introduit le type _Bool, qui est une macro définie dans le fichier d'en-tête stdbool.h. De plus, vrai et faux sont des macros qui se développent respectivement en constantes entières 1 et 0.

Par conséquent, dans C:

  • 4 < 5 est évalué à la valeur entière 1.
  • 4 > 5 est évalué à la valeur entière 0.

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