본문 바로가기
OLD/[C]개념정리

[개탱][C][2.Data Type & 형변환 & Casting]

by 개탱 2017. 12. 21.
728x90

변환 ( Casting ) 

 - Data Type(자료형)을 변환하는 것을 의미한다.

 - int -> short, int -> double 등등. .




1. 자동 형 변환 ( 암시적 형 변환 )

     - 사용자(프로그래머)가 특정한 명령을 내리지 않아도 컴파일러에서 자동으로 형을 변환시켜 저장하는 방식


예시

 

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main()
{
    int a = 3.5;
    double b = 5;
    printf("a = %d\nb = %f\n",a,b);
}
cs




 - 5번 라인을 확인하면 a는 현재 int(정수)로 지정이 되어있는데 현재 3.5 라는 실수값으로 초기화를 시켜주려합니다.
이에 자동으로 a라는 값에는 뒤 0.5의 값은 손실된채 오른쪽 사진과 같이 3이라는 값만 들어가게 됩니다.


 - 6번 라인을 확인하면 b는 현재 double(실수)로 지정이 되어있는데 현재 5라는 정수값으로 초기화를 시켜주려합니다.

이에 자동으로 b라는 값에는 5라는 값을 유지하고 값 손실없이 double값으로 자동으로 형변환이 되어 오른쪽 사진과 같이 5.000-의 값이 들어가게 됩니다.

(* 작은 자료형 -> 큰 자료형의 경우에는 값 손실 X)

(* 큰 자료형 -> 작은 자료형의 경우에는 값 손실이 발생할 수도 있음. )




 2. 강제 형 변환 ( 명시적 형 변환 )

 - 사용자(프로그래머)가 특정한 명령을 통하여 강제적으로 형을 변환시켜 사용하는 방식

 - 괄호"()"를 통하여 명시적으로 알려줍니다.


예시

 

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main()
{
    int a = 3;
    double b = 5.5;
    int Sum = a + (int)b;
    printf("Sum = %d\n", Sum);
}
cs




 - 5번 라인의 int(정수)형 a와 double(실수)형 b를 덧셈하여 int(정수)형 Sum에 저장하는 코드이다.

 - 7번라인을 확인하면 b의 앞에 "(int)" 가 붙어있는 것이 보이는데 이렇게 되면 연산시에

 - b는 5.5가 아닌 int(정수)형의 5가 되어 계산을 하게 됩니다.

 - 자동형변환의 경우에는 알아서 해주니 크게 신경안쓰더라도 강제형변환은 상당히 많이 쓰이니 기억해두자!

댓글