汎整数拡張
格下げをする際、変換前の値をa、変換後の型をT型とすると、変換後の値は、変換前と変換後の型および値の関係が以下のうちどちらかである場合には、変換前の値が維持される。
「符号付き→符号付き」であり、かつaがsigned Tで表現可能である
「符号無し→符号付き」であり、かつaがsigned Tで表現可能である
変換前の値が維持されない場合を以下に列挙する。
「符号付き→符号付き」であり、かつaがsigned Tで表現できない場合→処理系依存
「符号無し→符号付き」であり、かつaがsigned Tで表現できない場合→処理系依存
「符号付き→符号無し」であり、かつaが正の数である場合→
a % (1 + T_MAX)
「符号付き→符号無し」であり、かつaが負の数である場合→
(1 + T_MAX) - (-a % (1 + T_MAX))
「符号無し→符号無し」である場合→
a % (1 + T_MAX)