Un booléen peut-il toujours devenir zéro ou un lorsqu'il est converti en entier ?
Lors de la conversion d'une valeur booléenne en entier, de nombreux compilateurs semblent ne retiennent que 0 ou 1, ce qui soulève des questions sur la fiabilité de ce comportement. Examinons un exemple :
int a = 2; bool b = a; int c = 3 b; // What is the result? 4 or 5?
Réponse : Oui, bool est garanti être 0 ou 1 lorsqu'il est converti en entier.
En C :
La norme C (§4.5/4) déclare explicitement : "Une rvalue de type bool peut être convertie en une rvalue de type int, false devenant zéro et true devenant un."
En C:
Lorsqu'une valeur est convertie en _Bool, elle devient 0 ou 1 (§6.3.1.2/1) : "Lorsqu'une valeur scalaire est convertie en _Bool, le résultat est 0 si la valeur est égale à 0 ; sinon, le résultat est 1."
Lors de la conversion en int, le processus est simple car int peut contenir 0 et 1, il n'y a donc aucun changement de valeur (§6.3.1.3 ).
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3