Une valeur booléenne peut-elle toujours devenir zéro ou un lorsqu'elle est convertie en nombre entier ?
Lors de la conversion d'une valeur booléenne en nombre entier, de nombreux compilateurs semblent ne retenir 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 :
Le standard C (§4.5/4) déclare explicitement : "Une rvalue de type bool peut être converti en une rvalue de type int, false devenant zéro et true devenant un. 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).
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!