型キャスト変換
型キャストを使用して、明示的に型を変換できます。
構文
cast-expression
=
unary-expression
(
type-name
)
cast-expression
type-name
=
specifier-qualifier-list
abstract-declarator
opt
type-name
は型であり、cast-expression
は、その型に変換される値です。 型キャストがある式は左辺値ではありません。 cast-expression
は、type-name
型の変数に代入されたかのように変換されます。 代入の変換規則 (「代入変換」をご覧ください) は、型キャストにも適用されます。 特定の型にキャストできる型を次の表に示します。
有効な型キャスト
変換先の型 | 可能性のある変換元 |
---|---|
整数型 | 任意の整数型または浮動小数点型、またはオブジェクトへのポインター |
浮動小数点数 | 任意の数値型 |
オブジェクトへのポインター、または void * |
任意の整数型、void * 、オブジェクトへのポインター、または関数ポインター |
関数ポインター | 任意の整数型、オブジェクトへのポインター、または関数ポインター |
構造体、共用体、または配列 | None |
void 型 | 任意の型 |
void
型には、任意の識別子からキャストできます。 ただし、型キャスト式で指定された型が void
でない場合、その型にキャストされている識別子を void
式にすることはできません。 任意の式を void
にキャストできますが、void
型の式を他の型にキャストすることはできません。 たとえば、戻り値の型が void
の関数では、戻り値を別の型にキャストすることはできません。
void *
式は、void
型ではなく、void
への型ポインターを持ちます。 オブジェクトが void
型にキャストされる場合、結果の式はどの項目にも代入できません。 同様に、型キャスト オブジェクトは許容される左辺値ではないので、型キャスト オブジェクトへの代入はできません。
Microsoft 固有の仕様
識別子のサイズが変更されない限り、型キャストを左辺値の式にできます。 左辺値式の詳細については、「左辺値と右辺値の式」をご覧ください。
Microsoft 固有の仕様はここまで
キャストで式を型 void
に変換できますが、その結果の式を使用できるのは、値が不要な場合のみです。 void *
に変換され、元の型に戻されたオブジェクト ポインターは、元の値に戻ります。