C

【C言語】データの型変換の使い方を理解しよう!!

型変換は変数をあるデータ型から他のデータ型に変換する手段の1つです。

例えば、long型のデータをint型の変数に格納したいとき、そのままでは変数とデータの型が異なるので、予期していない結果になってしまうかもしれません。

こんなとき、C言語では以下に示すようなキャスト演算子を明示的に記述することで、値を別のデータ型に変換することができます。

型変換のサンプルコード

型変換が有効に活用できる例を見てみましょう。

まずは以下の除算のコードを実行します。

100÷3をしているので、数学的には33.3333….と出力されるのが正しい結果となります。

しかし実際には、以下のように33.000000と出力されることになります。

このようになってしまうのはaとbがint型なのが原因で、正しい結果を得るためには、変数aをint型からdouble型にキャストする必要があります。

キャスト演算子を使ってaを明示的に型変換したコードが以下になります。

結果は、

となり、正しい結果が得られていることが分かります。

型変換はキャスト演算子を使って明示的に行う以外にも、コンパイラによって自動的にキャストすることで暗黙的に行うこともできるのですが、

良いプログラミングの作法としては、型変換が必要なときには常にキャスト演算子を使うのが望ましいとされているようです。

汎整数拡張(Integer Promotion)

汎整数拡張とは、ある型の整数を扱うときに、ある条件のうえでその整数の型を格上げ、または格下げすることを言います。

格上げをすると、ある型からもっと多くの情報を表現できる型へ変換することになります。

逆に格下げをすると、より少ないビット数の型へと変換されることになります。

汎整数拡張の例としては、char型からint型への変換が分かりやすいです。

この場合は、char型は1バイトでint型は4バイトなので、格上げの汎整数拡張と言えます。

以下のコードを見てみましょう。

このコードをコンパイルして実行すると、

と表示されます。

int型とchar型を足し算していますが、これが正しく計算できているのはchar型の”a”をint型に格上げの汎整数拡張をしているからです。