Question :
De nombreux compilateurs semblent stocker bool les valeurs sont 0 ou 1, mais ce comportement est-il garanti ? Plus précisément, dans l'extrait suivant :
int a = 2; bool b = a; int c = 3 + b; // 4 or 5?
Réponse :
Oui, les valeurs booléennes sont garanties d'être converties en 0 ou 1 lorsqu'elles sont converties en int. Ce comportement est défini à la fois dans les standards C et C :
C (§4.5/4) :
Une rvalue de type bool peut être convertie en une rvalue de tapez int, avec false devenant zéro et true devenant un.
C (§6.3.1.2/1) :
Lorsqu'une valeur scalaire est convertie en _Bool, le le résultat est 0 si la valeur est égale à 0 ; sinon, le résultat est 1.
Par conséquent, dans l'exemple donné, b sera converti soit en 0 (si a n'est pas égal à 0), soit en 1 (si a est égal à 0). Ajouter 3 à b donnera 4 ou 5, selon la valeur de a.
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!