Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 타입 캐스팅 완벽 정리: 암시적 변환과 명시적 변환

타입 캐스팅(Typecasting)은 C 언어에서 하나의 데이터 타입을 다른 데이터 타입으로 변환하는 방법입니다. 프로그래밍 과정에서 서로 다른 자료형 간의 연산이 필요할 때 매우 유용하게 활용됩니다.

C 언어의 타입 캐스팅은 크게 두 가지 방식으로 나뉩니다.

1. 암시적 타입 캐스팅 (Implicit Type Casting)

암시적 타입 캐스팅은 컴파일러가 자동으로 수행하는 형변환입니다. 하나의 표현식 안에 두 개 이상의 서로 다른 데이터 타입 변수가 함께 사용될 경우, 컴파일러는 데이터 손실을 방지하기 위해 자동으로 데이터 타입을 변환합니다.

일반적으로 작은 크기의 타입이 더 큰 크기의 타입으로 변환되며, 예를 들어 char → int → float 순으로 승격(promotion)됩니다.

예제 코드

#include <stdio.h>
int main() {
    int a = 10;
    char b = 'S';
    float c = 2.88;
    a = a+b;
    printf("Implicit conversion from character to integer : %d\n",a);
    c = c+a;
    printf("Implicit conversion from integer to float : %f\n",c);
    return 0;
}

실행 결과

Implicit conversion from character to integer : 93
Implicit conversion from integer to float : 95.879997

위 예제에서 문자 'S'는 아스키 코드 값 83으로 자동 변환되어 정수 10과 더해져 93이 되었고, 이후 정수 93은 실수형으로 변환되어 95.879997이 출력된 것을 확인할 수 있습니다.

2. 명시적 타입 캐스팅 (Explicit Type Casting)

명시적 타입 캐스팅은 사용자가 직접 수행하는 형변환으로, 일반적으로 '타입 캐스팅'이라고 하면 이 방식을 의미합니다. 사용자가 원하는 데이터 타입으로 값을 강제로 변환할 때 사용합니다.

문법

(type) expression

괄호 안에 변환하고자 하는 데이터 타입을 명시하고, 그 뒤에 변환할 표현식을 작성합니다.

예제 코드

#include <stdio.h>
int main() {
    float c = 5.55;
    int s = (int)c+1;
    printf("Explicit Conversion : %d\n",s);
    return 0;
}

실행 결과

Explicit Conversion : 6

위 예제에서 실수 5.55는 (int) 캐스팅을 통해 소수점 이하가 버려진 정수 5로 변환되며, 여기에 1을 더해 최종적으로 6이 출력됩니다.

마무리

암시적 타입 캐스팅은 편리하지만 개발자의 의도와 다르게 동작할 수 있으므로 주의가 필요하며, 명시적 타입 캐스팅을 활용하면 데이터 변환 과정을 보다 명확하게 제어할 수 있습니다. 두 방식의 차이를 정확히 이해하고 상황에 맞게 활용하는 것이 안전한 C 프로그래밍의 기본입니다.