暗黙的な型変換と明示的な型変換(C#)

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~

目次

暗黙的な型変換とは?明示的な型変換とは?

型変換には、2つのタイプに分類することができます

暗黙的な型変換

暗黙的な型変換とは、コンパイラー側が適切な型を判断して、型変換をしてくれることを意味します。

例えば、値の範囲が異なるデータ型で、四則算を行った場合、値の範囲の大きい型に、自動的に変換されます。

具体的には、int型の数値とdouble型の数値が掛け算をした場合、その値はdouble型として、暗黙的に型変換が行われます。

double n = 3 * 2.5;

このように、暗黙的な型変換が行われるときは、データが失われないように考慮されています。

たとえ、掛け算の結果が整数であってもint型であるとコンパイラーは判断してくれません。

以下のようなコードはエラーになります。(演算の結果が10という整数であっても)

int n = 4 * 2.5;

明示的な型変換(キャスト)

明示的な型変換とは、変換したい型を明示して、型変換することを意味します。

キャスト演算子()を使って、変換したい型を決定します。

キャスト演算子を使えば、アップキャスト(拡大変換)はもちろん、ダウンキャスト(縮小変換)も行えます。

扱う値の範囲が狭くなるダウンキャストを行う場合、情報が失われる可能性があります。

例えば、以下のようにint型の3とdouble型の2.4を掛け算した場合は、double型の7.2になります。

int d = (int)( 3 * 2.4);

ここで、キャスト演算子(int)を使うことで、int型に強制的に変換しています。そのためdに入る値は7.2ではなく7になります。

そのため、明示的な型変換を行う場合は、小数点の情報や符号の情報が失われる危険性があります。

※小数点以下の値は、切り捨てで評価されます。四捨五入ではありません。

※キャストという言葉は、広い意味では、「型変換」を指します。狭い意味では「明示的な型変換」を指します。

ソースコード

実行結果

cの値は7.2
dの値は7
eの値は6

キャストしたい部分を()でくくります。カッコのくくる範囲で結果が変わることがあります。

dの場合は、2.4×3=7.2を計算した後に、int型に変換しているので、7になります。

eの場合は、bの値である2.4を整数の2に変換した後、3をかけているので、6になります。

関連記事

~プログラミングを勉強してみませんか?~

TechAcademy [テックアカデミー] 無料の体験講座が用意されているので、気軽に体験できます。

※私(サイト主)も無料体験講座を実際に受けてみました(→感想)

     

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)