必要な昇格
別の幅整数型 (つまりより多くの値を表すことができる) に整数型のオブジェクトを型変換できます。この変換に相当する型が呼び出されます 「の整数の上位変換」と呼ばれます。必要な昇格を使用すると別の整数型を使用できる場所で式で次のコマンドを使用して :
型 char と short int のオブジェクトおよびリテラル定数
列挙型
int のビット フィールド
列挙子
C++ の上位変換は 「値」保持します。つまり上位変換が上位変換前の値と同じであることが保証されると値。値と上位変換では int を入力する場合は短整数型のオブジェクト (型 char のビット フィールドまたはオブジェクトなどの int が元の型のすべての範囲を表す場合は) に昇格されます。int が値の一部を表すことができない場合 unsigned int を入力するにはオブジェクトに昇格されます。この方法はANSI C C によってですがこの値を保持するために使用するのと同じオブジェクトの 「」 signedness を保持しないでください。
signedness の場合通常同じ結果を保持する上位変換はと昇格値を保持します。ただしレベルを発生したオブジェクトは次のいずれかの異なる結果が返される可能性があります :
または %/=**%=<<=>**またはのオペランド >=
これらの演算子は結果を判断するための符号に依存します。これらのオペランドに適用すると昇格を押しながら値を保持すると異なる結果を生成します。
>> または >>= の左辺
これらの演算子はシフトの算術演算を実行するときは異なる署名された unsigned の数値を処理します。署名された数値の場合注文数のアクセス許可を再配置することは符号ビットを空いたビット位置に伝達します。unsigned の数値の場合空いたビット位置はゼロ設定されます。
引数で使用するそのオペランドの型の signedness に依存するオーバーロードされた演算子のオーバーロードされた関数またはオペランドに対する引数。(オーバーロードされた演算子の定義については オーバーロードされた演算子 を参照してください)。