C 언어 - 형변환(Casting)

컴퓨터/C

728x90
반응형

형 변환이란? 

프로그래밍에서 데이터를 메모리 공간에 저장하기 위해서는 메모리 공간에 맞는 자료형이 필요합니다. 

이 자료형이 한번 선언된 자료형의 데이터를 다른 자료형으로 변환을 하거나 다른 자료형끼리 연산을 하기 위해서는 같은 자료형으로 바꾸어 주어야 메모리상에서 정상적인 연산이 가능합니다. 이렇게 데이터의 자료형을 바꿔주는 기법을 형 변환이라고 합니다.  이 형 변환에는 크게 2가지가 있습니다.

  • 암시적 형 변환
    • 자동으로 자료형이 아닌 다른 자료형으로 형 변환이 되는 형태 
  • 명시적 형 변환
    • 사용자에 의도에 따라 자료형이 바뀌는 형 변환

암시적 형 변환

암시적 형 변환이란 자료형의 우선순위에 따라 데이터의 자료형이 자동적으로 바뀌는 형 변환을 말합니다.

이런 묵시적 형변환은 자동적으로 바뀌기 때문에 데이터의 손실이 이루어질 수 있어 가능한 사용을 할 시 주의해햐됩니다.

자료형의 암시적 형 변환의 우선순위는 다음과 같습니다.

  • char < int < float
  • 문자 < 정수 < 소수

위의 순서대로 자동적으로 자료형의 변환이 이루어지는 것을 암시적 형 변환이라고 합니다. 

#include <stdio.h>

int main()
{
	char a = 10;
	int b = a;
	printf("%d\n", b);
	
	float c;
	int d = 10;
	int e = 5;
	c= e / d;
	printf("%f\n", c);
}

메모리에 정의된 데이터의 자료형은 다르지만 서로 계산이 됩니다. 

하지만 int자료형 변수 d와 e를 나눈 값을 float자료형 변수 c에 넣었을 때 데이터의 손실이 생깁니다. 0.5가 아닌 0의 값이 나오는 것입니다. 실제 변수 c는  float자료형이지만 int자료형끼리 연산 환 결과는 0이기 때문입니다. 

 

명시적 형 변환

사용자가 원하는 시점에 형 변환을 하여 계산을 하기위해서는 사용자가 직접 형변환을 하겠다라고 문법적 명령을 해주어야 합니다. 이런 것을 명시적 형변환이라고 말하며 명시적 형변환을 하기위해 변수나 값앞에 괄호 ( ) 를 사용하여 변환할 자료형을 명시해 줌으로 형변환을 만들어 줍니다.

#include <stdio.h>

int main()
{
	float c;
	int d = 10;
	int e = 5;
	c= (float)e / (float)d;
	printf("%f\n", c);
}

위의 소스코드처럼 int형 변수 d와 e를 계산을 할 시점에 이 변수를 float타입으로 형변환을 하겠다 라고 표현하여 형변환을 하면 변수 d와e를 float타입으로 계산하여 변수 c에 저장을 하기 때문에 원하는 정확한 값을 얻을 수 있습니다.

이런 식으로 명식적 형 변환을 이용하여 자료형이 다른 곳에서 연산을 하여 정확한 결과를 얻어 낼 수 있습니다.

728x90
반응형

'컴퓨터 > C' 카테고리의 다른 글

C 언어 -포인터와 배열  (0) 2021.06.21
C 언어 - const 키워드  (0) 2021.06.18
C 언어 - 오버플로우와 언더플로우  (0) 2021.06.16
C 언어 - 다차원 배열  (0) 2021.06.14
C 언어 - 포인터 / 포인터 변수  (0) 2021.06.13

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :