몽상실현개발주의

[C] 형 변환 Type Conversion 본문

Language/C

[C] 형 변환 Type Conversion

migrationArc 2021. 5. 18. 17:26

[C] 형 변환 Type Conversion

[C] 형 변환 Type Conversion

C 언어의 자료형은 각각의 Data 가 저장되는 방식을 의미한다.

모든 데이터는 2진수로 저장 되지만, type 에 따라 Binary 로 표현되는 방식이 다르므로 저장되는 form 이 다르다는 의미이다.

int type 200 의 binary
00000000 00000000 00000000 11001000

float type 200.0 의 binary
01000011 01001000 00000000 00000000

 

이렇게 서로 다른 form 으로 저장되어 있는 Data 를, 원하는 Type 의  형식으로 저장 형태를 바꾸는 것을

형 변환 Type Conversion 이라고 한다.

 

형 변환에는 2가지 방법이 있다.

  1. 자동 형 변환(암시적 형 변환)
  2. 강제 형 변환(명시적 형 변환)

 

 

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

double a = 3.0F;
  • double 타입의 변수 a 에 float 타입의 값을 대입 할 때, 자동으로 double 타입으로 형 변환 발생
  • double 타입이 float 타입보다 더 많은 수를 표현 가능
  • 타입을 변경해도 정보의 손실이 일어나지 않는 경우 자동 형 변환 발생

 

메모리 크기가 작은 자료형에서 큰 자료형으로 변환되는 것이 우선순위

자동 형 변환

 

 

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

큰 자료형에서 작은 자료형으로 Data type 을 변환 할 때, Data 의 손실이 발생한다.

 

char c = 1106;
printf("%c\n", c);
  • 1106 은 binary 11 bits 가 필요, char 형은 8bits 이므로 Data 손실이 발생
  • 1106 = 10001010010 (11bits) -> 01010010 (8bits) = 82
  • ASCII Code 82 에 해당하는 문자인 'R' 이 출력

 

이러한 Data 손실을 최소화 하기 위해, 형 변환시 변환될 Data Type 을 명시하여 손실을 최소화 할 수 있음.

 

 

  • 데이터 손실이 없는 경우(확장 변환, 프로모션(Promotion))
    • 작은 자료형에서 큰 자료형으로 전환될 경우 데이터 손실이 발생하지 않습니다.
    • Ex) int  double 손실 X
  • 데이터 손실이 있는 경우(축소 변환, 디모션(Demotion))
    • 큰 자료형에서 작은 자료형으로 전환될 경우 데이터 손실이 발생합니다.
    • Ex) double  int 손실 O

 

 

#include <stdio.h>

int main(void){
    //문자형(작은 자료형)
    char num1 = 130;
    //데이터 손실 발생
    
    //int(정수형)
    int num2 = 3.14;
    //데이터 손실이 일어남
    
    //실수형(큰 자료형)
    double num3 = 5;
    printf("%d\n %d\n %lf\n", num1, num2, num3);
    
    return 0;
}
  • char num1 = 130
    • -126 
    • char의 데이터 범위는 -128 ~ +127인데 130으로 데이터 손실 and Overflow 발생
  • int num2 = 3.14
    • 정수형 int는 소수점을 담아내지 못해 데이터 손실 발생
  • double num3 = 5;
    • 5.000000 
    • 실수형 double 은 정수형의 메모리 크기보다 크기 때문에, 데이터 손실이 발생 X

 

 

 


참고 블로그

https://moolgogiheart.tistory.com/58

 

[C언어 강좌] 자동 형 변환/강제 형 변환

관련 글 [C언어 강좌] 자료형(정수/실수)의 종류와 크기(sizeof 함수) C언어 강좌 자료형끼리는 형 변환이 가능합니다. 즉, int형을 double형으로 바꾸고, char형을 int형 등으로 바꿀 수 있다는 소리죠!

moolgogiheart.tistory.com

https://opentutorials.org/course/1223/5330

 

형변환 - 생활코딩

형 변환 형 변환(Type Conversion)이란 데이터의 타입을 변경하는 것이다. 예를 들어 int 타입의 정수 200의 bit 값은 아래와 같다. 00000000 00000000 00000000 11001000 프로그래밍을 처음 시작하는 사람도 컴퓨

opentutorials.org

 

Comments