Partager via


Promotions d'un type intégral

Les objets d'un type intégral peuvent être convertis en un autre type intégral plus large (autrement dit, un type qui peut représenter un plus grand ensemble de valeurs). Ce type étendu de conversion est appelé « promotion d'un intégral ». La promotion d'un intégral vous permet d'utiliser ce qui suit dans une expression partout où un autre type d'intégral peut être utilisé :

  • Objets, littéraux et constantes de type char et short int

  • Types d'énumération

  • Champ de bits int

  • Énumérateurs

Les promotions C++ sont de type « conservation-valeur ». Autrement dit, vous pouvez être sûr que la valeur suivent la promotion est identique à celle qui la précède. Dans les promotions de type conservation-valeur, des objets des types intégraux plus courts (tels que les champs de bits ou des objets de type char) sont promus au type int si int peut représenter la plage complète du type d'origine. Si int ne peut pas représenter la plage de valeurs complète, l'objet est transformé en type unsigned int. Bien que cette stratégie soit la même que celle utilisée par C ANSI, les conversions de type conservation-valeur ne conservent pas « l'entier non signé » de l'objet.

Les promotions de type conservation-valeur et les promotions qui conservent l'entier non signé produisent normalement les mêmes résultats. Toutefois, ils peuvent produire des résultats différents si l'objet promu est l'un des suivants :

  • Un opérande /, %, /=, %=, <, <=, > ou >=

    Ces opérateurs se basent sur un signe pour déterminer le résultat. Par conséquent, les promotions de type conservation-valeur et conservation-signe produisent des résultats différents lorsqu'elles sont appliquées à ces opérandes.

  • L'opérande gauche >> ou >>=

    Ces opérateurs traitent les quantités signées et non signées différemment en effectuant une opération de décalage. Pour les quantités signées, le déplacement de la quantité vers la droite provoque la propagation du bit de signe dans les positions binaires libérées. Pour les quantités non signées, les positions binaires libérées sont vides.

  • Argument vers une fonction ou un opérande surchargé d'un opérateur surchargé qui dépend de l'entier non signé du type de l'opérande pour la correspondance d'argument. (Consultez Opérateurs surchargés pour en savoir plus sur la définition des opérateurs surchargés.)

Voir aussi

Référence

Conversions standard