型キャスト パート1
CoddyのCジャーニー「基礎」セクションの一部。レッスン 13/63。
Cの型キャストを使用すると、あるデータ型の値を別のデータ型に変換できます。異なるデータ型間で操作を実行する必要がある場合に便利です。
型変換には主に2種類あります:
- Implicit casting(automatically)
- 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ではこれを明示的に行う必要があります。これにより、潜在的なデータ損失を認識していることをコンパイラーに伝えます。
チャレンジ
簡単次のプログラムを書いてください:
- double 型の変数
resultを宣言し、5.65 を設定する - int 型の変数
gradeを宣言する - 明示的なキャストを使用して、
resultの値をgradeに代入する - 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;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ