Partager via


Promotions intégrales

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 élargissant de conversion est appelé « promotion de type intégral. » Avec la promotion de type intégral, vous pouvez utiliser le suivant dans une expression partout où un autre type intégral peut être utilisé :

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

  • types énumération

  • champs de bits d'int

  • Énumérateurs

Les promotions C++ « valeur-conservent ». Autrement dit, la valeur après la promotion soit garantie être identique à la valeur avant la promotion.Dans les promotions valeur-conservantes, des objets de types intégraux plus courts (tels que les champs de bits ou des objets de type char) sont promus de taper 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 est la même que celle utilisée par C ANSI, valeur-conservant des conversions ne parvenez pas à « signedness » de l'objet.

Valeur-conservant les promotions et les promotions qui conservent le produit de signedness normalement les mêmes résultats.Toutefois, ils peuvent produire des résultats si l'objet intégral est l'un des éléments suivants :

  • un opérande de /, d' %, d' /=, d' %=, d' <, d' <=, d' >, ou d' >=

    Ces opérateurs reposent sur le signe pour déterminer le résultat.Par conséquent, valeur-en conservant et signe-en conservant les promotions génèrent des différents résultats appliqué à ces opérandes.

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

    Quantités différemment signées et non signées de traiter de ces opérateurs en effectuant une opération de décalage.Pour les quantités signées, déplacer une droite de la quantité provoque le bit de signe à propager dans les positions binaires libérées.Pour les quantités non signées, les positions binaires libérées sont remplies de zéros.

  • Un argument à une fonction ou un opérande surchargée d'un opérateur surchargé qui dépend du signedness du type de cet opérande de la correspondance d'argument.(Voir l' opérateurs surchargés pour plus d'informations sur définir des opérateurs surchargés.)

Voir aussi

Référence

Conversions standard