형 변환


1. 형 변환이란?

<aside> 💡

정수와 실수는 컴퓨터 내부에서 표현되는 방식이 전혀 다르다. 이 두 개를 더한다고 할 때 그대로 연산을 수행할 수 없고 하나의 자료형으로 통일한 후 연산을 해야 한다. 이 때 형 변환이 이루어진다.

형 변환은 크게 묵시적 형 변환(자동 형 변환)과 명시적 형 변환(강제 형 변환) 두가지로 구별해서 생각할 수 있다.

</aside>

  1. 형 변환의 기본 원칙
    1. 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다.
    2. 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다.

정수 실수

byte → short → int → long → float → double

   ***char →***
  1. 위 표에서 반대 방향으로 형 변환을 할 시에는 강제로 변환 해야 한다.

    long형이 8바이트이고 float형이 4바이트인데 형 변환이 되는 이유는 기본적으로 실수가 정수보다 표현 범위가 더 넓고 정밀하기 때문이다.

    화살표 방향으로 형 변환 할 때는 자료 손실이 없지만, 반대 방향일 때는 자료 손실이 발생 할 수 있다.


2.묵시적 형 변환

2-1. 바이트 크기가 작은 자료형 —> 큰 자료형

byte bNum = 10;
int iNum = bNum;  // byte형 변수 bNum 값을 int형 변수 iNum에 대입함
  1. 이 경우에 bNum의 크기는 1바이트이고 iNum의 크기는 4바이트이므로 자료 손실 없이 bNum에 들어 있는 값이 모두 iNum에 저장된다. 남은 3바이트에는 0으로 채워진다.

2-2. 덜 정밀한 자료형 —> 더 정밀한 자료형

int iNum2 = 20;
float fNum = iNum2;
  1. 이 경우에는 두 변수의 크기가 같은 4바이트라도 float형인 fNum이 더 정밀하게 데이터를 표현할 수 있으므로 실수 자료형인 float형으로 변환된다.

2-3. 연산 중에 자동 변환되는 경우

int iNUM = 20;
float fNum = iNum;
double dNum;
dNum = fNum + iNum;
double형 <-- float형
  1. 이 경우에는 먼저 fNum + iNum에서 int —> float 형 변환이 되고, 두 변수를 더한 결과 값이 dNum에 대입 되면서 double형으로 변환된다.