형식 캐스팅 변환Type-Cast Conversions

형식 캐스팅을 사용하여 명시적으로 형식을 변환할 수 있습니다.You can use type casts to explicitly convert types.

구문Syntax

cast-expression:cast-expression:
단항 식unary expression

( type-name ) cast-expression( type-name ) cast-expression

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

type-name은 형식이고 cast-expression은 해당 형식으로 변환할 값입니다.The type-name is a type and cast-expression is a value to be converted to that type. 형식 캐스팅을 사용하는 식은 l-value가 아닙니다.An expression with a type cast is not an l-value. cast-expressiontype-name 형식의 변수에 할당된 것처럼 변환됩니다.The cast-expression is converted as though it had been assigned to a variable of type type-name. 할당에 대한 변환 규칙(할당 변환에 개괄되어 있음)은 형식 캐스팅에도 적용됩니다.The conversion rules for assignments (outlined in Assignment Conversions) apply to type casts as well. 다음 표에서는 임의의 형식으로 캐스팅될 수 있는 형식을 보여 줍니다.The following table shows the types that can be cast to any given type.

대상 형식Destination Types 잠재적 소스Potential Sources
정수 계열 형식 표Integral types 임의의 정수 형식 또는 부동 소수점 형식이나 개체에 대한 포인터Any integer type or floating-point type, or pointer to an object
부동 소수점Floating-point 산술 형식Any arithmetic type
개체에 대한 포인터 또는 (void \)A pointer to an object, or (*void ***) 임의의 정수 형식, (void \), 개체에 대한 포인터 또는 함수 포인터Any integer type, (*void ***), a pointer to an object, or a function pointer
함수 포인터Function pointer 임의의 정수 계열 형식, 개체에 대한 포인터 또는 함수 포인터Any integral type, a pointer to an object, or a function pointer
구조체, 공용 구조체 또는 배열A structure, union, or array 없음None
void 형식Void type 모든 형식Any type

모든 식별자를 void 형식으로 캐스팅할 수 있습니다.Any identifier can be cast to void type. 그러나 형식 캐스트 식에 지정된 형식이 void가 아닌 경우 해당 형식으로 캐스팅되는 식별자가 void 식이 될 수 없습니다.However, if the type specified in a type-cast expression is not void, then the identifier being cast to that type cannot be a void expression. 모든 식을 void로 캐스팅할 수 있지만 void 형식의 식은 다른 형식으로 캐스팅할 수 없습니다.Any expression can be cast to void, but an expression of type void cannot be cast to any other type. 예를 들어, void 반환 형식이 포함된 함수의 반환 형식을 다른 형식으로 캐스팅할 수 없습니다.For example, a function with void return type cannot have its return cast to another type.

void \* 식에는 void 형식이 아니라 void에 대한 형식 포인터가 있습니다.Note that a void \* expression has a type pointer to void, not type void. 개체가 void 형식으로 캐스팅되면 결과 식을 어떠한 항목에도 할당할 수 없습니다.If an object is cast to void type, the resulting expression cannot be assigned to any item. 마찬가지로, 형식 캐스팅 개체가 허용 가능한 l-value가 아니므로 형식 캐스팅 개체에 어떠한 항목도 할당할 수 없습니다.Similarly, a type-cast object is not an acceptable l-value, so no assignment can be made to a type-cast object.

Microsoft 전용Microsoft Specific

형식 캐스팅은 식별자의 크기가 변경되지 않는 한 l-value 식이 될 수 있습니다.A type cast can be an l-value expression as long as the size of the identifier does not change. l-value 식에 대한 자세한 내용은 L-Value 및 R-Value 식을 참조하세요.For information on l-value expressions, see L-Value and R-Value Expressions.

Microsoft 전용 종료END Microsoft Specific

캐스팅을 사용하여 식을 void 형식으로 변환할 수 있지만 결과 식은 값이 필요하지 않은 위치에서만 사용할 수 있습니다.You can convert an expression to type void with a cast, but the resulting expression can be used only where a value is not required. void \*로 변환되었다가 다시 원래 형식으로 변환된 개체 포인터는 해당 원래 값으로 되돌려집니다.An object pointer converted to void \* and back to the original type will return to its original value.

참고 항목See Also

형식 변환Type Conversions