ここで見る演算子の一部は,各オペランドに対し次のいずれかの型変換を施すため,式の値の型が変換後の型となります。
■整数拡張(Integer Promotions)[C99, 6.3.1.4, 2]
int
型で元の型(例えば,char
型)のすべての値を表すことができる場合,int
型に変換。できない場合は,unsigned int
に変換。
■通常の算術型変換(Usual Arithmetic Conversion)[C99, 6.3.1.8]
signed
,或いは unsigned
の場合,ランクの高い方に変換。
signed
もう一方が unsigned
の場合
unsigned
側の方がランクが低くない場合,signed
側が unsigned
側に変換される。
signed
側の型がもう一方の型の値のすべてを表すことができる場合,signed
側に変換される。
signed
側の型の unsigned
に変換。
* 整数型のランク:char
< short
< int
< long
< long long
[C99, 6.3.1.1, 1]