ここで見る演算子の一部は,各オペランドに対し次のいずれかの型変換を施すため,式の値の型が変換後の型となります。
■整数拡張(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]