C시작과 문법

형변환과 캐스팅

묵시적 형변환, 정수 승격, 명시적 캐스팅이 C 식 계산 결과를 어떻게 바꾸는지 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

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)처럼 나눗셈이 끝난 뒤 캐스팅하면 이미 정수 나눗셈이 수행된 뒤라서 원하는 실수 결과가 나오지 않습니다.