언어/C

C언어 타입 캐스팅(type casting)

JJANG-JOON 2023. 10. 30. 00:16
반응형

 

 

 

 

🍖 C언어 type casting 🍖

 

C 언어에서 type casting은 데이터의 자료형을 다른 자료형으로 변환하는 과정이며 크게 두가지 유형의 형변환이 있다.

이런 타입 캐스팅 과정은 CTF 문제를 풀 때 코드를 이해하는데에 있어서 기본이다.

 

 

 

 

 

 

 

  • 묵시적 형변환

묵시적 형변환은 데이터 타입이 서로 호환되는 경우 자동으로 수행되는 형변환이다. 예를 들어, int형 변수와 float형 변수를 더하는 경우, int형 변수는 자동으로 float형으로 형변환된다.

int a = 10;
float b = 2.5;

// 묵시적 형변환
printf("%f\n", a + b); // 12.5

 

 

 

 

 

  • 명시적 형변환

명시적 형변환은 개발자가 직접 데이터 타입을 변환하는 것을 말하며 (자료형)값과 같은 형식으로 수행된다. 예를 들어, int형 변수를 char형으로 변환하려면 다음과 같이 작성할 수 있다.

int a = 10;

// 명시적 형변환
char b = (char)a;

 

 

명시적 형변환은 묵시적 형변환과 달리 데이터 타입이 호환되지 않는 경우에도 사용할 수 있다. 이러한 경우, 데이터가 손실될 수 있으므로 주의해야 한다.

 

 

데이터의 int 형 변환 시 숫자가 아닌 데이터를 만나면 오류가 뜨거나 오류가 난 데이터 앞까지만 형 변환이 된다.

"000555ARD"의 경우, 정수로의 변환은 "000555" 부분까지만 이루어지고 나머지 "ARD" 부분은 변환되지 않는다.

 

 

 

 

 

 

 

C언어에서 형변환은 다음과 같은 용도로 사용될 수 있다.

 

 

  • 데이터 타입을 맞추기 위해
  • 데이터를 다른 함수 또는 함수 포인터에 전달하기 위해
  • 데이터를 출력 또는 입력하기 위해

 

 

 

***더 자세한 예시***

 

주어진 코드는 unsigned char 형식의 문자 배열인 arr을 사용하고, 그 데이터를 부호 없는 정수인 unsigned int 형식의 포인터를 사용하여 해석하려는 것을 보여준다.

이것은 arr 배열의 데이터를 4바이트 크기의 unsigned int 정수로 해석하겠다는 것이다.

 

 

 

 


 

 

 

 

 

 

반응형