Maison >développement back-end >C++ >Puis-je toujours supposer que « (bool)true » est équivalent à « (int)1 » en C ?

Puis-je toujours supposer que « (bool)true » est équivalent à « (int)1 » en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-28 18:44:111001parcourir

Can I Always Assume `(bool)true` is Equivalent to `(int)1` in C  ?

Puis-je supposer l'équivalence entre (bool)true et (int)1 entre les compilateurs ?

La question qui se pose tourne autour de savoir si l'égalité (bool)true == (int)1 est vrai universellement pour les compilateurs C. En d'autres termes, peut-on supposer en toute sécurité l'interchangeabilité de ces deux expressions ?

D'après la réponse fournie, la réponse est un « Oui » retentissant. Les castings eux-mêmes sont superflus en raison de la promotion intégrale. La promotion intégrale dicte que les valeurs booléennes sont automatiquement promues en int, true étant spécifiquement promu à la valeur entière 1.

Ce comportement est détaillé dans la section 4.7 [conv.integral]/4 de la norme C, qui indique explicitement que "Si le type source est bool... true est converti en un."

Par conséquent, l'expression true == 1 est essentiellement équivalente à 1 == 1, qui est évalué à vrai quel que soit le compilateur utilisé.

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