En C, il est courant d'utiliser le transtypage pour convertir les données d'un type à un autre. Cette question explore si nous pouvons supposer en toute sécurité l'équivalence de (bool)true et (int)1 dans les compilateurs C.
L'équivalence
La conversion de bool en int est défini par le standard C dans la section 4.7 [conv.integral]/4. Il indique que si le type source est bool, la valeur true est convertie en un. Cela signifie que dans l'expression (bool)true == (int)1, la valeur bool sera promue en int et aura une valeur de 1.
Casting redondant
Les conversions dans l'expression (bool)true == (int)1 sont techniquement redondantes. La valeur booléenne sera automatiquement promue en int par le compilateur et la comparaison fonctionnera comme prévu sans les conversions explicites.
Compatibilité du compilateur
L'équivalence entre ( bool)true et (int)1 sont garantis par la norme C. En tant que tel, c'est une hypothèse sûre à faire pour tout compilateur C qui adhère à la norme.
Conclusion
En C , nous pouvons supposer en toute sécurité (bool)true == (int)1 pour tous les compilateurs C qui suivent le standard C. Les transtypages sont redondants et peuvent être omis sans affecter le résultat de la comparaison.
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!