C キャスト

キャストは、変数をある型から別のデータ型に変換するものです。例えば、long 型の値を単純な整数型に格納したい場合、long 型を int 型にキャストする必要があります。使用できるのはキャスト演算子値の型を明示的に別の型に変換するには、次のようにします:

(type_name) expression

次の例では、キャスト演算子を使って整数変数を別の整数変数で割り、浮動小数点数を取得しています:

例

#include <stdio.h> int main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean ); }

上記のコードをコンパイルして実行すると、次の結果が得られます:

Value of mean : 3.400000

ここで注意すべき点は、キャスト演算子の優先順位が除算よりも高いことです。したがってsumの値が最初にdouble型に変換され、その後 count で除算され、double 型の値が得られます。

型変換は、コンパイラによって自動的に実行される暗黙的なものと、次のものを使って明示的に行うものがあります。キャスト演算子で指定することができます。プログラミングでは、型変換が必要なときにキャスト演算子を使うことは、良いプログラミング習慣です。

整数の昇格

整数の昇格とは、より小さいint 或 unsigned int整数型をint 或 unsigned intに変換するプロセスです。

例

#include <stdio.h> int main() { int i = 17; char c = 'c'; /*ascii 値は 99*/ int sum; sum = i + c; printf("Value of sum : %d\n", sum ); }

上記のコードをコンパイルして実行すると、次の結果が得られます:

Value of sum : 116

ここで、sum の値は 116 になります。これは、コンパイラが整数の昇格を行い、実際の加算演算を実行するときに 'c' の値を対応する ascii 値に変換するためです。

通常の算術変換

通常の算術変換は、値を暗黙的に同じ型に強制変換します。コンパイラはまず整数の昇格を実行します。オペランドの型が異なる場合、それらは次の階層の中で最も高い階層の型に変換されます:

Usual Arithmetic Conversion

通常の算術変換は、代入演算子、論理演算子 && および || には適用されません。この概念を理解するために、次の例を見てみましょう:

例

#include <stdio.h> int main() { int i = 17; char c = 'c'; /*ascii 値は 99*/ float sum; sum = i + c; printf("Value of sum : %f\n", sum ); }

上記のコードをコンパイルして実行すると、次の結果が得られます:

Value of sum : 116.000000

ここで、c は最初に整数に変換されますが、最終的な値は float 型なので、通常の算術変換が適用され、コンパイラは i と c を浮動小数点型に変換し、それらを加算して浮動小数点数を取得します。

その他の拡張