본문 바로가기

프로그래밍 언어/C언어

C언어 - 타입캐스팅 typecasting

 

 

 

 

타입 캐스팅이란 쉽게 말해서 형 변환을 하는 것이다.

 

 

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