Conversion bool en int
Considérez l'extrait de code suivant :
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
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 :
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:
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!