Maison >développement back-end >C++ >Puis-je toujours supposer que « (bool)true » est équivalent à « (int)1 » en 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!