007.C 격상과 캐스트
격상
- 다른 형끼리 연산하면 결과는 큰 자료형으로 도출된다.
격상은 다른 자료형끼리 연산할 때 적용되는 문법입니다, 간단한 논리이니 이해하기 쉬울 것입니다.
정수형(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형으로 바꾸는 것이 조금 더 우리에게 직관적으로 이해하기 편한 면이 있습니다.
'KAITE.til > C Language' 카테고리의 다른 글
009.C 등가연산자, 관계연산자, 조건연산자, 논리연산자 (0) | 2018.09.16 |
---|---|
008.C if 조건문 총 정리 (if문, if - else문, if- else if - else문) (0) | 2018.08.28 |
006.C 연산자와 오퍼랜드 (0) | 2018.08.22 |
005.C 입력과 출력 함수 (scanf, printf, puts 정리) (0) | 2018.08.21 |
004.C 변수와 자료형 (0) | 2018.08.20 |
댓글
이 글 공유하기
다른 글
-
009.C 등가연산자, 관계연산자, 조건연산자, 논리연산자
009.C 등가연산자, 관계연산자, 조건연산자, 논리연산자
2018.09.16 -
008.C if 조건문 총 정리 (if문, if - else문, if- else if - else문)
008.C if 조건문 총 정리 (if문, if - else문, if- else if - else문)
2018.08.28 -
006.C 연산자와 오퍼랜드
006.C 연산자와 오퍼랜드
2018.08.22 -
005.C 입력과 출력 함수 (scanf, printf, puts 정리)
005.C 입력과 출력 함수 (scanf, printf, puts 정리)
2018.08.21