형 변환 파트 1
Coddy C 여정의 Fundamentals 섹션에 포함된 레슨 — 63개 중 13번째.
C 언어에서의 타입 캐스팅(형 변환)은 한 데이터 타입의 값을 다른 타입으로 변환할 수 있게 해줍니다. 이는 서로 다른 데이터 타입 간의 연산을 수행해야 할 때 유용합니다.
형 변환(type casting)에는 두 가지 주요 유형이 있습니다:
- 암시적 형 변환 (자동)
- 명시적 형 변환 (수동)
암시적 형변환부터 시작해 보겠습니다:
작은 데이터 타입에서 큰 데이터 타입으로 변환할 때 암시적 형변환이 자동으로 발생합니다:
int num = 10;
double decimal_num;
// int에서 double로의 암시적 형변환
decimal_num = num;위 코드를 실행한 후, decimal_num은 10.0 값을 갖게 됩니다.
이것은 double이 데이터 손실 없이 int의 모든 가능한 값을 저장할 수 있기 때문에 작동합니다. 변환이 안전하므로 C는 이를 자동으로 수행합니다.
일반적인 암시적 형변환 경로:
- char → int → long → float → double
이제 명시적 형변환(explicit casting)에 대해 알아보겠습니다:
명시적 형변환(Explicit casting)은 변환하려는 값 앞에 대상 데이터 타입을 괄호 안에 넣어 수동으로 수행됩니다. 이는 데이터 손실이 발생할 수 있는 큰 데이터 타입에서 작은 데이터 타입으로 변환할 때 필요합니다:
double decimal_num = 5.65;
int num;
// double에서 int로 명시적 형변환
num = (int)decimal_num;위 코드를 실행한 후, num은 5라는 값을 갖게 됩니다.
double에서 int로 캐스팅할 때 소수 부분은 (반올림되지 않고) 버려진다는 점에 유의하세요. 명시적 캐스팅을 위한 구문은 다음과 같습니다:
(target_type) value이러한 변환은 데이터 손실이 발생할 수 있기 때문에, C 언어에서는 이를 명시적으로 수행할 것을 요구합니다. 이는 컴파일러에게 잠재적인 데이터 손실 가능성을 인지하고 있음을 알려주는 역할을 합니다.
챌린지
쉬움다음과 같은 프로그램을 작성하세요:
double변수result를 선언하고 5.65로 설정합니다.int변수grade를 선언합니다.- 명시적 형변환(explicit casting)을 사용하여
result의 값을grade에 할당합니다. - printf를 사용하여 "The grade is: " 메시지와 함께
grade의 값을 출력합니다.
치트 시트
암시적 형변환 (Implicit casting) — 작은 타입에서 큰 타입으로의 자동 변환:
int num = 10;
double decimal_num = num; // 10.0이 됨일반적인 암시적 형변환 경로: char → int → long → float → double
명시적 형변환 (Explicit casting) — (target_type) value를 사용한 수동 변환:
double decimal_num = 5.65;
int num = (int)decimal_num; // 5가 됨 (반올림되지 않고 버림됨)데이터 손실이 발생할 수 있는 큰 타입에서 작은 타입으로 변환할 때는 명시적 형변환을 사용하세요.
직접 해보기
#include <stdio.h>
int main() {
double result = 5.65;
int grade;
// 명시적 형변환을 사용하여 result(double)를 grade(int)로 변환합니다.
printf("The grade is: %d\n", grade);
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.