산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 타입 캐스팅: 암시적/명시적 변환 마스터하기 with 코드 예제

C에서 타입 캐스팅(Typecasting)이란?

C에서 타입 캐스팅(또는 데이터 변환)은 한 데이터 타입의 값을 다른 데이터 타입으로 변환하는 과정입니다. 모든 C 프로그래머가 마스터해야 할 기본 개념입니다.

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

암시적(자동) 타입 캐스팅은 개발자 개입 없이 컴파일러가 한 데이터 타입을 다른 타입으로 자동 변환할 때 발생합니다. 이는 값의 의미가 보존되고 대상 타입이 소스 값을 표현할 수 있을 때만 일어납니다.

  1. 암시적 변환은 대입, 함수 호출, 산술 연산 시 자동 수행
  2. 두 피연산자 타입이 다를 때 더 작은 순위(rank) 피연산자가 더 높은 순위 타입으로 승격

다음 예제 참고:

#include<stdio.h>
int main() {
    short a = 10; // short
    int b; // int
    b = a; // 암시적 캐스팅
    printf("%d\n", a);
    printf("%d\n", b);
    return 0;
}

출력:

10
10

컴파일러가 short 값을 자동으로 int로 승격하여 정보 손실 없음.

C 타입 캐스팅: 암시적/명시적 변환 마스터하기 with 코드 예제

문자에서 정수로 승격(Character to Integer Promotion)

char가 산술 표현식에 참여하면 컴파일러는 ASCII 코드를 사용하여 int로 승격:

#include <stdio.h>
int main() {
    int number = 1;
    char character = 'k'; /* ASCII 107 */
    int sum = number + character;
    printf("Value of sum : %d\n", sum);
    return 0;
}

출력:

Value of sum : 108

산술 변환 계층(Arithmetic Conversion Hierarchy)

C 표준은 혼합 타입 산술에서 대상 타입을 결정하는 계층을 정의합니다. 문자 승격 후 피연산자 타입이 여전히 다르면 컴파일러는 다음 차트 최상위 타입으로 변환:

C 타입 캐스팅: 암시적/명시적 변환 마스터하기 with 코드 예제

산술 변환 계층

예제:

#include <stdio.h>
int main() {
    int num = 13;
    char c = 'k'; /* 107 */
    float sum = num + c;
    printf("sum = %f\n", sum);
    return 0;
}

출력:

sum = 120.000000

여기서 c가 먼저 int로 승격된 후 두 피연산자 모두 float가 되어 덧셈 수행.

암시적 변환 핵심 포인트

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

명시적 캐스팅은 컴파일러가 자동으로 수행하지 않는 변환을 강제합니다. 소수부 절단이나 무관한 타입 간 변환 등 정확한 표현이 필요할 때 필수적.

문법은 간단:

(타입명) 표현식

그렇지 않으면 결과가 절단될 나눗셈에서 명시적 캐스팅 예:

#include <stdio.h>
int main() {
    int var1 = 10, var2 = 3;
    int result = var1 / var2; // 3, 소수부 손실
    int result2 = (int)((float)var1 / var2); // 3.333… → int 캐스팅 → 3
    printf("result = %d\n", result);
    printf("result2 = %d\n", result2);
    return 0;
}

명시적 캐스팅은 무관한 타입 간 변환에도 유용:

#include <stdio.h>
int main() {
    float a = 1.2;
    int b = (int)a + 1; // float를 int로 캐스팅
    printf("Value of a is %f\n", a);
    printf("Value of b is %d\n", b);
    return 0;
}

출력:

Value of a is 1.200000
Value of b is 2

C 타입 캐스팅: 암시적/명시적 변환 마스터하기 with 코드 예제

요약

모범 사례 가이드라인

C 언어

  1. C# 타입 변환 마스터하기: 암시적, 명시적, Parse, Convert 메서드
  2. 파이썬 타입 변환 & 캐스팅 마스터하기: 종합 가이드
  3. Java 타입 캐스팅 마스터하기: 자동 형변환부터 명시적 형변환까지
  4. 신뢰성의 인터넷(Internet of Reliability)에서 데이터 활용: 효과적 관리 전략
  5. C++ switch-case 마스터하기: 문법, 활용법, 실전 예제
  6. C++ char 타입 마스터: 선언, ASCII 코드, 문자열 변환 기법
  7. C++ 구조체(struct) 완벽 가이드: 선언, 인스턴스, 포인터, 함수 인자 전달
  8. C++ std::list 마스터하기: 문법, 함수, 실전 예제
  9. C# 데이터 타입 완전 정복: 값 타입, 참조 타입, 포인터 타입
  10. C# 타입 변환 이해하기: 암시적 & 명시적 캐스팅 완벽 가이드