C言語の型変換規則は何ですか?
C言語の型自動変換規則は、式中で異なるデータ型のオペランドが操作される場合、コンパイラは一定のルールに従って型変換を行い、オペランドの型を一致させて演算を行うということを指します。
C言語の型自動変換の基本原則には、以下が含まれています。
- もし2つの操作数の型が異なる場合、1つの型をもう1つの型に変換して、2つの操作数の型が一致するようにします。変換のルールは以下の通りです。
- 片方がlong double型である場合、もう一方の操作数はlong double型に変換されます。
- もし1つの操作数がdouble型である場合、もう1つの操作数もdouble型に変換されます。
- もし1つのオペランドがfloat型であれば、もう1つのオペランドもfloat型に変換されます。
- もし一方のオペランドがunsigned long int型であり、もう一方のオペランドがlong int型の場合、long int型はunsigned long int型に変換されます。
- 片方がunsigned int型である場合、もう片方がint型である場合、int型はunsigned int型に変換されます。
- もし一方のオペランドがlong int型であり、もう一方のオペランドがint型である場合、int型はlong int型に変換されます。
- 有符号の型のオペランドと符号なしの型のオペランドがある場合、以下の変換が行われます。
- 符号付きの表現範囲が符号なしの全ての非負数を収容できる場合、符号なしの型は符号付きの型に変換されます。
- それ以外の場合、符号付きの型が符号なしの型に変換されます。
- float型のオペランドとdouble型のオペランドがある場合、float型はdouble型に変換されます。
- double型とlong double型の演算の場合、double型がlong double型に変換されます。
- float型のオペランドがlong double型のオペランドと計算される場合、float型はlong double型に変換されます。
注意すべき点は、型変換が式内でのみ発生し、オペランド自体の型を変更しないということです。変換後の結果は変換後の型に従って計算や代入が行われます。