〜キャストの方法〜

キャストを行う場合、以下のように記述する。
キャストしたい場合
( 変換したい型 )変数名;

代入する時にキャストしたい場合
代入元の変数名 = ( 代入元の変数の型 )代入したい変数名;


キャストの例

    int a = 12;
    byte b = a;	        //ナローイング変換をしているのでコンパイルエラーが発生する

    byte c = (byte)a;     //byte型にキャストしているのでコンパイルエラーは発生しない


ワイドニング変換により下位ビットの情報を失う場合の例

    int a = 1234567890;

    float b = a;           //ワイドニング変換
2行目の代入はワイドニング変換のためコンパイルエラーは起こらない。
しかし、bの値はaにおける下位ビットの情報を失い、1.23456794E9(=123456794×109 =1234567940)となる。
そして、このあと以下のようにbをint型にキャストしてaから引きint型変数cに代入する。
    int c = a - (int)b;    //この時点でbの値が1234567936になってしまう。
本来は同じ数を引いているためcを出力すると0であるはずだが、bをint型に変換した時点でbの値が1234567936になってしまう。
そのため1234567890-1234567936=-46となりワイドニング変換により下位ビットの情報を失っていることがわかる。


数値格上げ変換(int型同士の除算)におけるキャストの例

    int A = 5;
    int B = 2;

    double c = (double) A / B;
Aがdouble型にキャストされ、int型ではなくdouble型で演算結果を得ることができる。

【注意】キャストを行ったからといって、代入元の変数の型が変わるわけではない。

    double a = 12.12345;
    int c = (int)a;
aをint型に一時的にキャストしているが、実際にaの値がint型になるわけではなく、aを出力すれば12.12345であり、cを出力すると12となる。