スポンサーリンク
※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~
目次
暗黙的な型変換とは?明示的な型変換とは?
型変換には、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になります。
そのため、明示的な型変換を行う場合は、小数点の情報や符号の情報が失われる危険性があります。
※小数点以下の値は、切り捨てで評価されます。四捨五入ではありません。
※キャストという言葉は、広い意味では、「型変換」を指します。狭い意味では「明示的な型変換」を指します。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Cast02 { class Program { static void Main(string[] args) { int a = 3; double b = 2.4; //エラー //int c = a * b; double c = a * b;//暗黙的な型変換 Console.WriteLine("cの値は" + c); int d = (int)(a * b);//明示的な型変換 Console.WriteLine("dの値は" + d); int e = a * (int)b;//明示的な型変換 Console.WriteLine("eの値は" + e); } } } |
実行結果
cの値は7.2
dの値は7
eの値は6
キャストしたい部分を()でくくります。カッコのくくる範囲で結果が変わることがあります。
dの場合は、2.4×3=7.2を計算した後に、int型に変換しているので、7になります。
eの場合は、bの値である2.4を整数の2に変換した後、3をかけているので、6になります。
関連記事
~プログラミングを勉強してみませんか?~
TechAcademy [テックアカデミー] は無料の体験講座が用意されているので、気軽に体験できます。
※私(サイト主)も無料体験講座を実際に受けてみました(→感想)