타입 캐스팅이란 쉽게 말해서 형 변환을 하는 것이다.
6일차에서 다루었던 자료형을 살펴보자.
예를 들어서 형 확장은 정수형이 실수형이 되는 것이기 때문에 표현 범위가 넓어진다.
하지만 예를들어 형 축소는 실수형이 정수형이 되는 과정에서는
값이 손실되어 형이 축소된다.
(ex. 4.3333333333 ------> 4)
그렇다면 왜 형 변환을 하는 것일까?
가장 쉬운 예시로는 정수형과 실수형을 연산할 때이다.
#include <stdio.h>
int main() {
int a = 16;
int b = 7;
float c;
c = a / b;
printf("%f", c);
}
정수형끼리 나누어서 실수형으로 출력해본다면 어떤 값이 나올까?
2가 아닌 소수점이 생긴 2.0000... 이 나온 것을 확인할 수 있다.
하지만 2.0000... 과 같이 소수점까지 계산된 것이 아니었다.
소수점까지 계산을 하려면 정수형끼리의 연산이 아닌
정수형과 실수형끼리 연산을 하면 된다.
#include <stdio.h>
int main() {
int a = 16;
int b = 7;
float c;
c = (float)a / b;
printf("%f", c);
}
a를 float 타입으로 만든 후 정수형 b와 나누어서
실수형 c를 출력한 결과
소수점까지 연산된 것을 확인할 수 있다.
물론 b를 float 타입으로 만든 후 정수형 a와 나누어도 되고 ---> a / (float)b
둘 다 float 타입으로 만든 후 나누어도 된다. ---> (float)a / (float)b
하지만 나눈 후 float 타입으로 형변환하는 것은
정수끼리의 나눗셈 결과인 2를 실수화하는 것이므로
결괏값은 2.0000 으로 나올 것이다.
---> (float)(a / b)
https://book.naver.com/bookdb/book_detail.nhn?bid=8187381
'프로그래밍 언어 > C언어' 카테고리의 다른 글
C언어 - 배열의 시작 (0) | 2021.01.20 |
---|---|
C언어 - 아스키코드 (0) | 2021.01.19 |
C언어 - 사용자 정의 함수 (최종) (0) | 2021.01.14 |
C언어 - 매개변수 (0) | 2021.01.13 |
C언어 - 사용자 정의 함수 (기본편) (0) | 2021.01.12 |