격상

- 다른 형끼리 연산하면 결과는 큰 자료형으로 도출된다.

격상은 다른 자료형끼리 연산할 때 적용되는 문법입니다, 간단한 논리이니 이해하기 쉬울 것입니다.

정수형(int형)과 소수점이 존재하는 부동소수점형(double형)끼리 연산을 하게 되면 자동적으로 int형은 double형으로 격상하는 과정을 거치게 된다.

 


 

앞서 배운 강의들을 토대로 두 과목의 점수를 받아들여 평균을 내는 프로그램을 만들어보겠습니다.

 

평균 점수 구하는 프로그램

 

79점과 90점이라는 임의의 점수를 입력해보았습니다.

79 + 90 나누기 2는 84.5라는 것을 우리는 쉽게 알 수 있습니다.

하지만 이렇게 코드를 짜니까 84라는 숫자가 나왔습니다.

어디서 문제가 생긴걸까요?

(79 + 90) / 2에서 모든 수는 정수이기 때문에 '/'연산자를 사용할 시에 결과에서 소수점이 제외한 결과가 나오게 되기 때문입니다.

 

 

그렇기 때문에 소수점까지 계산을 하기 위해서는 위와 같이 double형으로의 격상이 필요합니다.

두 정수를 더한 값을 2.0으로 나누게 되면 더한 정수(a + b)가 double형으로 격상되어

나눈 결과 값이 소수점이 존재하는 double형으로 나오게 됩니다.

나누는 수를 double형으로 해주는 것으로 격상시키는 방법도 있지만 반대로 두 수를 더한 정수를 double형으로 바꿔주는 것으로 나누는 수를 격상시키는 것은 어떨까요?

 


 

캐스트

이러한 것을 가능하게 하는 형 변환 과정을 바로 '캐스트(cast)'라고 부릅니다.

캐스트 연산자 : (형명)A - A의 값을 형을 괄호사이의 형명에 해당하는 형으로 변환한다.

캐스트 사용방법은 위와 같으며 '( )'를 캐스트 연산자라 부릅니다.

 

위에서 했던 문제를 캐스트를 이용해서 살짝 바꾸어보았습니다.

(a + b)의 형을 캐스트를 통해서 double형으로 바꾸었으며 2로 나누더라도 격상으로 인해

결과 값이 double형으로 나오게 됩니다.

사실 우리는 평균을 구할 때 과목 수로 나눈다고 생각하지 과목 수에 .0을 붙여서 생각하지는 않습니다.

그렇기 때문에 위와 같이 나누어 지는 수를 double형으로 바꾸는 것이 조금 더 우리에게 직관적으로 이해하기 편한 면이 있습니다.