サンプルプログラム cast.c
(15)キャスト
型の異なる変数に値を代入するときはキャストしてやる必要があります。
キャストはキャストする変数の前に型に括弧を付けて{例.(char *)var}などとします。
#includevoid main( void ) { char c; long x; float f; double d; char *cp; long *lp; x = 1; d = 1.0; lp = &x; c = x; // ワーニングになる可能性があります(GCCでは何故か通ります) c = (char)x; // char型にキャストしているので問題ありません f = d; // ワーニングになる可能性があります f = (float)d; // float型にキャストしているので問題ありません cp = lp; // ワーニング、またはエラーになります cp = (char *)lp; // char型のポインタにキャストしているので問題ありません printf( "%d %ld %f %f, %x, %x\n", c, x, f, d, (unsigned int)cp, (unsigned int)lp ); }
キャストは型の異なる変数に無理やり値を代入するのに使いますので、
代入した結果がオーバーフローしたりしないか、その他の問題が発生しないかなどについてはプログラマ任せになりますのでご注意ください。