강제 형 변환 — 캐스팅과 정수·실수 나눗셈 | 기초 C언어 5.3.2
기초 C언어Chapter 05 연산자 › Section 03 기타 연산자 › 02
5.3.2 강제 형 변환
컴파일러가 알아서 맞추는 자동 변환과, 괄호로 자료형을 적어 직접 바꾸는 강제 변환. 정수 나눗셈을 실수로 받는 법.
01자료형을 바꾸는 두 갈래교재 142p
자료형을 바꾸는 길은 둘 — 컴파일러가 알아서 바꾸는 쪽과 프로그래머가 시켜서 바꾸는 쪽.
1자동 형 변환
- 연산의 편의를 위해 컴파일러가 알아서 바꿔 주는 것.
- 5.1.1 에서 본 「둘 중 하나만 실수면 실수 나눗셈」이 그 예.
2강제 형 변환 (Casting)
- 강제 형 변환(Explicit Type Conversion) — 프로그래머가 명시적으로 원하는 자료형으로 바꾸는 것.
- 짧게 부르는 이름이 캐스팅.
- 잠시 다른 옷을 입히는 일 — 연산이 끝나면 원래 자료형으로 돌아옴. 변수 자체의 자료형이 영구히 바뀌지는 않음.
02형 변환 연산자 — 괄호로 감싼 자료형교재 142p
- 값의 왼쪽에 적음 — 바꾸고 싶은 변수나 값의 왼쪽에, 괄호 () 로 새로운 자료형을 감싸서 표현함.
- (double)a — 정수 a 를 잠시 실수로. (int)pi — 실수 pi 를 잠시 정수로. 방향은 양쪽으로 열려 있음.
(새로운_자료형) 변수_또는_값
03정수 나눗셈의 결과를 실수로 얻기교재 142p~143p
- 그릇만 키워서는 안 됨 — 10 / 4 는 정수끼리 나누어 몫 2 만 남으므로, 그 2 를 double 변수에 담아도 2.0 일 뿐. 원하던 2.5 는 얻지 못함.
- 나눗셈 자체를 실수 나눗셈으로 — (double)a 가 붙으면 식이 10.0 / 4 가 되고, C언어 규칙에 따라 다른 피연산자 b 도 double 로 따라 바뀌어 결과 2.5.
result1 = a / b;result2 = (double)a / b;
04거꾸로 — 의도적인 데이터 손실교재 144p~145p
- 실수를 정수로 — num = (int)pi; 처럼 소수점 이하를 일부러 버릴 때도 씀.
- 반올림이 아니라 버림(truncation) — 3.14159 의 정수 부분 3 만 남음. 3.9 였더라도 결과는 3.
전체 코드와 줄별 해설은 교재 142p~145p CODE 5.11 · CODE 5.12 에 있습니다.
05답을 가르는 자리 — 차례와 방향교재 143p~145p
여기서 자주 틀림
- 형 변환은 나눗셈 직전에 적용됨 — 계산이 끝난 뒤에 큰 그릇에 담는 것과, 계산 전에 자료형을 바꾸는 것은 서로 다른 일. 이 차례 하나가 답을 가름.
- 괄호는 값의 왼쪽 — 뒤에 붙이면 뜻이 통하지 않음.
- 좁은 쪽으로 갈 때는 잃음 — 알지 못한 채 잃는 것이 아니라, 알고서 덜어 내는 쓰임.
이 절의 핵심 정리
- 컴파일러가 알아서 바꾸면 자동 형 변환, 프로그래머가 시켜서 바꾸면 강제 형 변환이다.
- 캐스팅의 꼴은 (자료형)값으로, 괄호는 값의 왼쪽에 붙는다.
- a / b를 double에 담아도 2.0, (double)a / b라야 2.5다.
- (int)pi는 반올림이 아니라 소수점 이하를 그대로 버린다.
- 캐스팅은 그 연산 동안만이며, 변수 자체의 자료형이 영구히 바뀌지는 않는다.
강의 자료5.3.2 강제 형 변환
1 / 10
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기