본문 바로가기
프로그래밍 언어/C

[C언어] 형 변환, typedef

by 느링 2017. 6. 13.

자료형변환

 

자동형변환

컴파일러가 자동으로 형 변환을 시켜주는 것

 

① 정수 + 실수 or 실수 + 정수와 같은 산술 연산을 하는 경우

 

정수에서 실수로 자동형변환이 이루어진 것입니다.

 

② 대입 연산을 하는 경우

 

 

대입 연산자를 기준으로 오른쪽에서 왼쪽으로 자동형변환이 이루어진 것입니다.

하지만 위에 두 값이 데이터 손실이 이루어졌습니다.

 

또 다른 예를들어

 

 

위에보신 것처럼 double(실수 2.5)에서 int(정수 2)로, int(정수 12)에서 double(실수 12.000000)으로

자동형변환이 이루어진 것입니다.

여기서 문제는 int(4Byte)에서 double(8Byte)로 형 변환이 되었을 때는 작은형에서 큰형으로 변환된 것이어서

문제가 되지 않지만 큰형에서 작은형double(8Byte)에서 int(4Byte)로 변환되었을 때에는 문제가 생깁니다.

바로 데이터 손실이라는 문제가 생기는 것인데요.

위에 예문처럼 double에서 int로 바뀌었을 때 2.5에서 2로 데이터 손실이 이루어지는 것입니다.

 

이런 데이터 손실을 최소화하기 위해서 나온 것이 바로 강제형변환이라는 것입니다.

 

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

프로그래머가 강제적으로 이미 정의된 자료형을 다른 자료형으로 변환하는 것

 

 

typedef를 이용한 자료형의 재정의

        → definition(정의)

기본 자료형들에 새로운 이름을 붙이는 용도

 : 자료형을 간결하게 표현 가능하고 프로그램의 가독성을 높일 수 있지만,

   너무 남용하면 자료형 분석 시 혼란을 초래할 수 있습니다.

ex) typedef int mytype; // 지금부터 int를 mytype으로 봐라