C言語を習得する

サンプルプログラム cast.c

(15)キャスト

型の異なる変数に値を代入するときはキャストしてやる必要があります。
キャストはキャストする変数の前に型に括弧を付けて{例.(char *)var}などとします。

#include	

void 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 );
}

キャストは型の異なる変数に無理やり値を代入するのに使いますので、 代入した結果がオーバーフローしたりしないか、その他の問題が発生しないかなどについてはプログラマ任せになりますのでご注意ください。


ページのTOPへ






メニュー