次の方法で共有


型キャスト変換

型キャストを使用して、明示的に型を変換できます。

構文

  • cast-expression:
    unary expression

    ( type-name ) cast-expression

  • type-name:
    specifier-qualifier-list abstract-declarator opt

type-name は型であり、cast-expression は、その型に変換される値です。 型キャストがある式は左辺値ではありません。 cast-expression は、type-name 型の変数に代入されたかのように変換されます。 代入の変換規則 (「Assignment Conversions (代入変換)」を参照) は、型キャストにも適用されます。 特定の型にキャストできる型を次の表に示します。

有効な型キャスト

変換先の型

可能性のある変換元

整数型

任意の整数型または浮動小数点型、またはオブジェクトへのポインター

浮動小数点数

任意の数値型

オブジェクトへのポインター、または (void *)

任意の整数型、(void *)、オブジェクトへのポインター、または関数ポインター

関数ポインター

任意の整数型、オブジェクトへのポインター、または関数ポインター

構造体、共用体、または配列

なし

void 型

任意の型

void 型には、任意の識別子からキャストできます。 ただし、型キャスト式で指定された型が void でない場合、その型にキャストされている識別子を void 式にすることはできません。 任意の式を void にキャストできますが、void 型の式を他の型にキャストすることはできません。 たとえば、戻り値の型が void の関数では、戻り値を別の型にキャストすることはできません。

void * 式は、void 型ではなく、void への型ポインターを持つことに注意してください。 オブジェクトが void 型にキャストされる場合、結果の式はどの項目にも代入できません。 同様に、型キャスト オブジェクトは許容される左辺値ではないので、型キャスト オブジェクトへの代入はできません。

Microsoft 固有の仕様 →

識別子のサイズが変更されない限り、型キャストを左辺値の式にできます。 左辺値式の詳細については、「左辺値と右辺値の式」を参照してください。

END Microsoft 固有の仕様

キャストで式を型 void に変換できますが、その結果の式を使用できるのは、値が不要な場合のみです。 void * に変換され、元の型に戻されたオブジェクト ポインターは、元の値に戻ります。

参照

概念

型変換 (C)