C言語

【C言語】第1章第11回:型キャストの基本とその用途

型キャスト(Type Casting)は、あるデータ型の値を別のデータ型に変換する操作を指します。この章では、型キャストの基本とその用途について詳しく解説します。また、具体的なプログラム例を交えて学び、練習問題とその解説付き答えも提供します。

1. 型キャストとは?

型キャストは、あるデータ型を別のデータ型に明示的または暗黙的に変換する操作です。C言語では、以下の2種類の型キャストがサポートされています:

  • 暗黙的型キャスト(Implicit Type Casting):コンパイラが自動的に型を変換。
  • 明示的型キャスト(Explicit Type Casting):プログラマーが型を指定して変換。

型キャストを使うことで、異なる型の値を操作する際のエラーを防ぎ、柔軟なプログラミングが可能になります。

2. 暗黙的型キャスト

暗黙的型キャストは、コンパイラが自動的に行う型変換です。主に、小さいデータ型を大きいデータ型に変換する際に適用されます。

例:整数から浮動小数点数への変換

#include <stdio.h>

int main() {
    int a = 10;
    float b;

    b = a; // 暗黙的型キャスト:intからfloatに変換
    printf("Value of b: %.2f\n", b);

    return 0;
}

解説:

  • aは整数型(int)で値10が格納されています。
  • 暗黙的型キャストにより、aの値が浮動小数点型(float)の変数bに変換されます。

3. 明示的型キャスト

明示的型キャストでは、プログラマーが型を指定して変換を行います。これにより、より細かい制御が可能になります。

例:浮動小数点数から整数への変換

#include <stdio.h>

int main() {
    float pi = 3.14159;
    int truncated;

    truncated = (int)pi; // 明示的型キャスト:floatからintに変換
    printf("Truncated value: %d\n", truncated);

    return 0;
}

解説:

  • piは浮動小数点型(float)で値3.14159が格納されています。
  • (int)piによってpiが整数型(int)に変換され、小数点以下が切り捨てられます。

4. 型キャストの用途

型キャストは、以下のような場面でよく使用されます:

  • 異なる型の演算:整数型と浮動小数点型を同時に演算する場合。
  • 精度の調整:計算の精度を高めるために一時的に型を変換。
  • データのトリミング:不要な小数点以下を削除する場合。

5. 練習問題

以下の課題に挑戦して、型キャストの理解を深めましょう。

  1. 整数型の変数xyを定義し、それらの割り算を実行し、結果を小数点以下2桁まで表示してください。
  2. 浮動小数点型の数値を入力し、それを整数型に変換して出力するプログラムを作成してください。
  3. 明示的型キャストを使用して、配列内の要素をすべて整数型に変換して出力するプログラムを書いてみましょう。

6. 練習問題の解答と解説

問1の解答

#include <stdio.h>

int main() {
    int x = 5, y = 2;
    float result;

    result = (float)x / y; // 明示的型キャストで割り算を正確に実行
    printf("Result: %.2f\n", result);

    return 0;
}

解説:変数xを浮動小数点型に変換することで、整数の割り算による精度の損失を防ぎます。

問2の解答

#include <stdio.h>

int main() {
    float number;
    int truncated;

    printf("Enter a floating-point number: ");
    scanf("%f", &number);

    truncated = (int)number; // 明示的型キャストで小数点以下を切り捨て
    printf("Truncated value: %d\n", truncated);

    return 0;
}

解説:ユーザーから入力された浮動小数点数を整数型に変換して、小数点以下を切り捨てた値を出力します。

問3の解答

#include <stdio.h>

int main() {
    float numbers[] = {1.1, 2.2, 3.3, 4.4};
    int size = sizeof(numbers) / sizeof(numbers[0]);

    printf("Converted values:\n");
    for (int i = 0; i < size; i++) {
        printf("%d\n", (int)numbers[i]); // 配列要素を整数型に変換して出力
    }

    return 0;
}

解説:配列内の浮動小数点数を整数型に変換し、それぞれを出力します。

7. まとめ

型キャストは、データ型を柔軟に変換するための重要な手段です。暗黙的型キャストと明示的型キャストを適切に使い分けることで、プログラムの精度や効率性を高めることができます。練習問題を通じて理解を深め、実践に活かしていきましょう!