------------------------------------------
형 변환은
데이터 타입의 형태를 변환하는 것으로
type conversion 이라고 합니다.
------------------------------------------
우선 자동 형변환에 대해서 살펴보겠습니다.
자동 형변환은 컴퓨터가 형변환을 자동으로 해준다는 것이며
암묵적 형 변환이라고도 부릅니다.
------------------------------------------
여기 코드를 보시면
5번째 줄에서
Double형 변수 dnum에 5를 대입하고
6번째 줄에서
Int형 변수 inum에 3.14를 대입하고 있습니다.
------------------------------------------
실행결과는 다음과 같습니다.
주목 할 점은
5를 저장했는데
5.00000이 나왔고
3.14를 저장했는데
3이 나왔다는 사실입니다.
------------------------------------------
코드를 분석해보면
5번째 줄과
6번째 줄은 원래 잘못된 코드라고 볼 수 있습니다.
왜냐하면
Double형 변수는 실수를 저장하는 변수인데 정수 5를 저장했고
Int형 변수는 정수를 저장하는 변수인데 실수 3.14를 저장했기 때문입니다.
하지만 정상적으로 출력이 되는 이유는
컴퓨터가 정수 5를 실수 5로 변환시켜 준 다음 dnum에 저장했고
컴퓨터가 실수 3.14를 정수 3으로 변환시켜 준 다음 inum에 저장했기 때문입니다.
------------------------------------------
그 다음 자동 형변환의 2번째 예제를 살펴보겠습니다.
5번째 줄을 보면
double형 변수 num에
4더하기 3.14를 한 값을 저장하고 있습니다.
수학에서 였다면
당연히 7.14라고 바로 계산되는 문제이지만
컴퓨터에서는 이 덧셈식이 문제가 있습니다.
왜냐하면
4는 정수이고
3.14를 실수이기 때문에
데이터 크기도 다르고 표현방법도 다르기 때문에
정상적인 덧셈이 수행되지 않는 다는 것입니다.
정수와 실수는 같이 덧셈을 할 수 없습니다.
이렇게 연산되는 값들의 형태가 다른 이 상황을
피 연산자의 자료형 불일치 라고 합니다.
------------------------------------------
하지만 이렇게 실행해보면
에러도 없고 실행도 잘됩니다.
이유가 뭘까요?
------------------------------------------
이렇게
피 연산자의 자료형이 불일치 하는 상황이 발생하면
정수와 실수가 있을때
실수에 맞춰줘서 계산하게 됩니다.
왜냐하면
실수를 우선시해서 맞춰주는게
데이터의 손실을 줄이는 방향이기 대문입니다.
정수를 우선시해서 맞춰주면
3.14가 3이 되어 0.14의 값이 손실 나므로
좋은 방법이 아니고
정수와 실수가 같이 있다면
실수쪽으로 통일시켜 계산하게 됩니다.
------------------------------------------
그 다음
강제 형 변환에 대해서 살펴보겠습니다.
강제 형 변환은
명시적 형 변환이라고도 부르며
프로그래머가 직접 형 변환을 해주는 것을 말합니다.
------------------------------------------
------------------------------------------
------------------------------------------
왜냐하면
수학에서 였다면
10나누기 4는 결과가 2.5가 나왔겠지만
컴퓨터에선 자료형도 중요하기 때문에
10나누기 4에서
10과 4는 둘 다 정수라서
결국, 정수 10 나누기, 정수 4는
결과가 정수가 되어 2가 되는 것입니다.
------------------------------------------
다음 이 결과를 개선하는 코드를 살펴 보겠습니다.
num1앞에
(double) 를 써주면
이것은 강제 형변환을 하는 코드가 됩니다.
즉, num1을 double로 형변환 해라 라는 말이 됩니다.
------------------------------------------
실행 해보면
결과가 정상적으로 2.5가 나오는 것을 알 수 있습니다.
------------------------------------------
------------------------------------------
------------------------------------------
------------------------------------------
정수 나누기 정수 에서
실수 나누기 정수 로 바뀌고
이것은 피 연산자의 자료형이 불일치 하는 상황이 되어
그 다음에는 컴퓨터가 자동 형변환을 해주어
실수 나누기 실수 형태로 바뀌게 됩니다.
그러면 결과가 최종적으로 실수 2.5가 나오게 됩니다.
------------------------------------------
'C_프로그래밍' 카테고리의 다른 글
[C 프로그래밍] 17장. scanf_s 정수입력 (0) | 2020.04.04 |
---|---|
[C 프로그래밍] 16장. 서식문자 (0) | 2020.04.04 |
[C 프로그래밍] 14장. 상수 (0) | 2020.04.04 |
[C 프로그래밍] 13장. ASCII 코드 (0) | 2020.04.04 |
[C 프로그래밍] 12장. 자료형과 sizeof (0) | 2020.04.04 |