Menu
Coddy logo textTech

型キャスト パート1

CoddyのCジャーニー「基礎」セクションの一部。レッスン 13/63。

Cの型キャストを使用すると、あるデータ型の値を別のデータ型に変換できます。異なるデータ型間で操作を実行する必要がある場合に便利です。

型変換には主に2種類あります:

  1. Implicit casting(automatically)
  2. Explicit casting(手動)

暗黙的なキャストから始めましょう:

Implicit casting は、小さいデータ型から大きいデータ型に変換するときに automatically 行われます。

int num = 10;
double decimal_num;

// int から double への暗黙的キャスト
decimal_num = num;

上記のコードを実行すると、decimal_num の値は 10.0 になります

これは、double がデータを失うことなく int のすべての可能な値を格納できるため機能します。変換は安全なので、C はそれを automatically 行います。

一般的な暗黙の型変換の経路:

  • char → int → long → float → double

それでは、明示的なキャストを見てみましょう。

Explicit casting は、変換したい値の前に、対象のデータ型を括弧で囲んで記述することで手動で行います。これは、より大きなデータ型からより小さなデータ型へ変換する場合に必要です。その際、データが失われる可能性があります。

double decimal_num = 5.65;
int num;

// double から int への明示的キャスト
num = (int)decimal_num;

上記のコードを実行すると、numの値は5になります

double から int へキャストすると、小数部分は丸められずに切り捨てられることに注意してください。明示的なキャストの構文は次のとおりです。

(target_type) value

この変換によってデータが失われる可能性があるため、Cではこれを明示的に行う必要があります。これにより、潜在的なデータ損失を認識していることをコンパイラーに伝えます。

challenge icon

チャレンジ

簡単

次のプログラムを書いてください:

  1. double 型の変数 result を宣言し、5.65 を設定する
  2. int 型の変数 grade を宣言する
  3. 明示的なキャストを使用して、result の値を grade に代入する
  4. printf を使用して、メッセージ "The grade is: " とともに grade の値を出力する

自分で試してみよう

#include <stdio.h>

int main() {
    double result = 5.65;
    int grade;
    
    // 明示的なキャストを使用して result (double) を grade (int) に変換する
    
    printf("The grade is: %d\n", grade);
    
    return 0;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Cオンラインコンパイラ