본문 바로가기
Programming/C, C++

C++ 타입(형) 변환 (Type conversion, Type Casting)

by Dev_카페인 2022. 12. 14.
반응형

[C/C++] 타입(형) 변환 (Type conversion, Type Casting)

 

자료형 변환이란 char형을 int로 바꾸거나 int를 double로 바꾸는 식으로 자료형 타입을 바꾸는 것을 말한다.

C언어에서 다른 타입끼리의 연산은 우선 피연산자들을 모두 같은 타입으로 만든 후에 수행된다.

이처럼 하나의 타입을 다른 타입으로 바꾸는 행위를 타입 변환(type conversion)이라고 한다.

타입 변환은 크게 두 가지 방식으로 나눌 수 있다.

  1. 묵시적 타입 변환(자동 타입 변환, implicit type conversion)
  2. 명시적 타입 변환(강제 타입 변환, explicit type conversion)

묵시적 타입 변환(자동 타입 변환, implicit type conversion)

  • 컴파일러가 자동으로 실행해주는 타입 변환
  • 대입 연산 시 연산자의 오른쪽에 존재하는 데이터의 타입이 연산자의 왼쪽에 존재하는 데이터의 타입으로 묵시적 타입 변환이 진행된다.
  • 산술 연산에서는 데이터의 손실이 최소화되는 방향으로 묵시적 타입 변환이 진행된다.
#include <stdio.h>

int main()
{
	char c = 'A';
	int i = 10;

	i = c;   // 자동 형 변환
	printf("i의 값 : %d", i);   // 65출력
	return 0;
}

변수 i에는 65라는 숫자가 저장된다.

왜 65가 들어갔냐면 알파벳 대문자 A를 숫자로 변환한 아스키 코드(ASCII Code)가 바로 65이기 때문이다.

기본적으로 자동 형변환이 되는 경우는

왼쪽의 타입에서 오른쪽의 타입으로 변경된다면 자동으로 형변환이 가능하다.

char 형 → short 형 → int 형 → long 형 → float 형 → double 형 → long double 형

명시적 타입 변환(강제 타입 변환, explicit type conversion)

사용자가 타입 캐스트(type cast) 연산자를 사용하여 강제적으로 수행하는 타입 변환

  • 변환하고자 하는 데이터의 앞에 괄호()를 추가하고, 그 안에 변환할 타입을 적는다.
  • C언어에서는 이 괄호()를 타입 캐스트(type cast) 연산자라고 한다.
#include <stdio.h>

int main()
{
	int num01 = 1;
	int num02 = 4;

	double result01 = num01 / num02;
	double result02 = (double)num01 / num02;

  // result01에 저장된 값은 0.000000입니다.
	printf("result01에 저장된 값은 %f입니다.\\n", result01); 
  // result02에 저장된 값은 0.250000입니다.
	printf("result02에 저장된 값은 %f입니다.\\n", result02);
	return 0;
	}

산술 연산에 대한 결괏값의 타입은 피연산자의 타입과 언제나 일치한다.

즉 int형 데이터끼리의 산술 연산에 대한 결괏값은 언제나 int형 데이터로 나온다.

두 번째 연산에서처럼 하나의 피연산자를 명시적으로 double형으로 지정해야만 정확한 결괏값을 얻을 수 있다.

 

 

 

 

 

 

반응형