En C et même en C99, les développeurs exploitent souvent la conversion implicite de valeurs booléennes (bool) en entiers (int) . Cependant, il est crucial de comprendre la portabilité et les implications de cette conversion pour garantir l'exactitude du code.
Considérez les extraits de code suivants :
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
Quels sont les résultats attendus de ces assertions ? Sont-ils garantis de réussir dans tous les contextes ?
Portabilité de la conversion Bool en Int
La conversion implicite de bool en int est définie dans le standard C :
Cette conversion est entièrement portable et garantit un comportement correct sur tous les compilateurs conformes. .
Évaluation des assertions
Basée sur la conversion règles, on peut évaluer les assertions :
Conclusion
Dans le contexte du code fourni, les assertions réussira car la conversion bool en int est implicitement effectuée et les valeurs attendues (1 pour "true" et 0 pour "false") sont attribuées correctement. Cependant, il est important de noter que ce comportement ne se limite pas aux extraits de code présentés et s'étend à toute situation dans laquelle de telles conversions sont utilisées.
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!