기본 패턴
c
int total = 7;
int count = 2;
double average = (double)total / count;
int truncated = (int)3.9;
char code = (char)65;설명
- C 식은 연산 전에 타입을 맞추기 위해 묵시적 형변환을 자주 수행합니다.
- 작은 정수 타입은 보통
int로 승격된 뒤 계산에 참여합니다. - 정수끼리 나누면 소수 부분이 버려지므로, 실수 결과가 필요하면 연산 전에 캐스팅해야 합니다.
- 명시적 캐스팅은 의도를 분명하게 보여 주지만, 잘못 쓰면 정보 손실을 숨길 수도 있습니다.
짧은 예제
c
#include <stdio.h>
int main(void) {
int sum = 7;
int count = 2;
printf("integer division = %d\n", sum / count);
printf("floating division = %.1f\n", (double)sum / count);
printf("truncated value = %d\n", (int)3.9);
return 0;
}빠른 정리
| 항목 | 설명 |
|---|---|
| 묵시적 형변환 | 연산 전에 컴파일러가 자동으로 타입을 맞춤 |
| 정수 승격 | char, short 등이 int로 올라가 계산됨 |
| 명시적 캐스팅 | (type)value 형태로 타입 변환을 직접 지정 |
| 정보 손실 | 큰 값을 작은 타입으로 바꾸면 값이 달라질 수 있음 |
| 정수 나눗셈 | 피연산자가 모두 정수면 소수 부분이 버려짐 |
주의할 점
(double)(sum / count)처럼 나눗셈이 끝난 뒤 캐스팅하면 이미 정수 나눗셈이 수행된 뒤라서 원하는 실수 결과가 나오지 않습니다.