型キャスト パート1
CoddyのCジャーニー「Fundamentals」セクションの一部 — レッスン 13/63。
C言語における型キャストを使用すると、あるデータ型の値を別のデータ型に変換できます。これは、異なるデータ型の間で演算を行う必要がある場合に便利です。
型変換には主に2つの種類があります:
- 暗黙的な型変換(自動)
- 明示的な型変換(手動)
暗黙的な型変換から始めましょう:
暗黙的な型変換は、小さいデータ型から大きいデータ型へ変換するときに自動的に行われます:
int num = 10;
double decimal_num;
// intからdoubleへの暗黙的な型変換
decimal_num = num;上記のコードを実行した後、decimal_num の値は 10.0 になります。
double型はデータを失うことなくint型のすべての可能な値を格納できるため、これは機能します。この変換は安全であるため、C言語はこれを自動的に行います。
一般的な暗黙的型変換のパス:
- char → int → long → float → double
それでは、明示的なキャストを見てみましょう:
明示的な型変換(キャスト)は、変換したい値の前にターゲットとなるデータ型を括弧で囲んで記述することで手動で行われます。これは、データの損失が発生する可能性がある、大きなデータ型から小さなデータ型へ変換する場合に必要です:
double decimal_num = 5.65;
int num;
// doubleからintへの明示的な型変換
num = (int)decimal_num;上記のコードを実行した後、num の値は 5 になります
double型からint型へキャストする際、小数部分は(四捨五入ではなく)切り捨てられることに注意してください。明示的なキャストの構文は次の通りです:
(target_type) valueこの変換ではデータが失われる可能性があるため、C言語では明示的に行う必要があります。これにより、データ損失の可能性があることを認識していることをコンパイラに伝えます。
チャレンジ
簡単以下のプログラムを作成してください:
- double型の変数
resultを宣言し、5.65を代入します - int型の変数
gradeを宣言します - 明示的なキャスティングを使用して、
resultの値をgradeに代入します - printfを使用して、"The grade is: "というメッセージと共に
gradeの値を出力します
チートシート
暗黙的な型変換 — 小さい型から大きい型への自動変換:
int num = 10;
double decimal_num = num; // 10.0 になります一般的な暗黙的な型変換の順序: char → int → long → float → double
明示的な型変換 — (target_type) value を使用した手動変換:
double decimal_num = 5.65;
int num = (int)decimal_num; // 5 になります(四捨五入ではなく切り捨て)データ損失が発生する可能性がある、大きい型から小さい型への変換を行う場合には、明示的な型変換を使用します。
自分で試してみよう
#include <stdio.h>
int main() {
double result = 5.65;
int grade;
// 明示的なキャストを使用して、result (double) を grade (int) に変換します
printf("The grade is: %d\n", grade);
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。