본문 바로가기
C언어

세이버의 C언어 강의 19강_ 자료형이란 무엇인가 Part4_형변환

by 비원(Be one) 2019. 4. 29.
반응형

여러분 안녕하세요. 세이버입니다.

 

이번 강에서는 자료형의 마지막 개념인 형변환에 대해서 알아보겠습니다.

혹시 자료형에 대한 개념이 부족하신 분들은 16강을 참고하여 주시길 바랍니다.

 

세이버의 C언어 강의 16강_ 자료형이란 무엇인가 : https://poci.tistory.com/23

 

세이버의 C언어 강의 16강_ 자료형이란 무엇인가

여러분 안녕하세요. 세이버입니다. 여러분들은 저번 강을 끝으로 조건문과 반복문을 배우셨습니다. 조건문과 반복문을 알고 계시면 대부분의 코드를 작성하실 수 있습니다. 이번 강에서는 여러분들의 프로그래밍..

poci.tistory.com


1. 형변환

형변환(Type Transformation)이란 자료형을 다른 자료형으로 변환시키는 것을 의미합니다.

int를 float로, double를 char로 변환하는 것처럼 변환시키는 것이죠.

 

컴퓨터 언어의 자료형은 16강에서 보여드린 것처럼 다양합니다.

때문에 int와 float의 연산처럼 다른 자료형과의 연산이 불가피합니다.

 

다른 자료형끼리 연산을 하게 되면 값의 오차가 생길 수 있고, 연산 시간도 길어지는 문제점이 있습니다.

그렇기에 프로그래머는 적절히 자료형을 변환해줌으로써 이러한 문제점을 해결해야 합니다.

 

형변환에는 컴파일러가 자동으로 변환해주는 자동 형변환과 프로그래머가 임의로 변환하는 강제 형변환이 있습니다.

 

 

2. 자동 형변환

자동 형변환은 컴파일러가 자료형을 자동으로 변환시켜주는 형변환입니다.

 

int형인 변수 num1과 float형인 변수 num2에 각각 값을 대입하고, 값을 더하는 연산을 했습니다.

서로 다른 자료형으로 연산을 했기에 원래대로라면 경고가 나오거나 오류가 생기게 됩니다.

그런데 프로그램을 실행하니 아무 경고나 오류 없이 잘 동작합니다.

 

이유는 컴파일러가 자동 형변환을 하여 int형인 num1를 float형으로 변환하여 연산을 했기 때문입니다.


자료형 변환의 우선순위

 

char < int < long < float < double < long double


이러한 우선순위를 가지고 우선순위가 낮은 자료형이 높은 자료형으로 변환되게 됩니다.

그래서 위의 예제에서 num1이 int형에서 float형으로 변환돼 연산된 겁니다.

 

또한 자동 형변환은 변수에 값을 대입할 때도 발생하게 됩니다.

 

정수형 변수 num1에 3.14인 실수를 대입했습니다.

마찬가지로 실수형 변수 num2에 10인 정수를 대입했습니다.

 

오류가 나야 맞지만, 컴파일러가 자동 형변환을 하여 변수의 자료형에 알맞게 대입해줬기에 오류가 나지 않습니다.

 

형변환은 내가 해놨으니 걱정말라고!!

 

 

3. 강제 형변환

강제 형변환은 프로그래머가 직접 자료형을 변환하는 것을 의미합니다.

 

강제 형변환을 하는 방법은 아래와 같습니다.


강제 형변환 방법

 

(바꾸고자 하는 자료형) 변수;


예시로 설명드리겠습니다.

 

정수형 변수 num1에 10을 대입하고, 7줄에서 num1의 값을 출력하는 코드입니다.

그런데 7줄을 자세히 보시면 (float)num1이라고 되어있습니다.

이는 num1을 float형으로 바꾼다는 강제 형변환으로 출력값을 보시면 실수형의 형태로 출력되는 걸 보실 수 있습니다.

 

단, 강제 형변환은 일회성으로 다음 줄로 넘어가는 순간 형변환이 풀려 본래의 자료형으로 돌아가게 됩니다.

 

7줄에서는 강제 형변환으로 num1이 flaot형이 되었지만, 8줄에서는 다시 int형으로 돌아간 걸 확인할 수 있습니다.

 

이러한 강제 형변환으로 연산에서의 오차를 줄일 수 있습니다.

 

9줄에서 실수형 변수 result에 정수형 변수끼리의 나누기 연산을 한 값을 대입하고 있습니다.

10과 7을 나누므로 소수점이 발생하지만, 정수형은 소수점을 버리고 계산하기에 result에 1이 대입됩니다.

 

그러나 12줄에서는 num1과 num2를 float로 형변환을 시킨 후 계산을 하기에 소수점까지 계산돼 result에 대입됩니다.


이번 강의는 여기까지입니다.

이제 자료형은 모두 배우셨으니 다음 강에서는 다른 주제로 찾아뵙도록 하겠습니다.

 

오늘도 수고하셨습니다.

 


정리

- 형변환 : 자료형을 다른 자료형으로 바꾸는 것

- 형변환을 하는 이유 : 다른 자료형들끼리의 연산에서 발생하는 오차를 줄이기 위해

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

- 강제 형변환 : 프로그래머가 직접 자료형을 변환시키는 것


강의가 유익하셨거나 마음에 드셨으면 구독과 좋아요, 댓글 부탁드립니다.

궁금하신 점이나 질문은 댓글이나 메일 남겨주세요.

 

poci5003@gmail.com

 

 

반응형