본문 바로가기
소프트웨어 개발(SW Dev)

Type-punning

by flowhistory 2024. 3. 4.

Type-punning은 어떤 변수가 있을 때, 그 변수의 실제 값을 무시하고 형 변환 없이 다른 자료형으로 변환하는 것을 가리킵니다. 

변환된 값은 메모리 상에서 원래 값과 똑같은 비트열로 표현되게 됩니다.

 

예를 들어, C에서 다음과 같은 코드를 고려해 봅시다:

int i;
i = 0x42f74000;
printf("%f\n", *(float *)&i); // type punning

 

소스 코드를 실행하면 "123.625000"이 출력됩니다.

이 경우, 변수 i의 값은 0x42f74000인데, 이를 정상적인 형 변환으로 float 형으로 바꾸면 1.12350003e9라는 값이 나옵니다.

하지만 위와 같이 하면 형 변환이 일어나는 것이 아니라 int 형으로 표현된 변수 i를 막바로 float 형으로 읽어 들이게 되고, 같은 비트열로 표현되는 숫자 123.625가 나오는 것입니다.

이러한 기법은 메모리의 비트 표현을 다른 자료형으로 해석하는 것을 가능하게 합니다.

Type-punning은 프로그래밍에서 특정 상황에서 유용할 수 있으나, 주의해야 할 점도 있습니다. 

이 기법을 사용할 때는 코드의 가독성(Readability) 과 안전성을 고려하여 사용해야 합니다.

 

728x90

'소프트웨어 개발(SW Dev)' 카테고리의 다른 글

Java 코딩 시 주의할 점  (0) 2024.10.15
SIMD (Single Instruction Multiple Data)  (0) 2024.03.04
Java 다운로드  (0) 2021.10.25
ISO20000과 ITIL4  (0) 2021.05.18
ITIL(IT Infrastructure Library)  (0) 2021.05.03

댓글