5. 자료형 변환이란?
1) 자료형 변환의 개념
- 자료형 변환(type casting)이란, 선언된 변수의 기존 자료형을 다른 자료형으로 바꾸는 것을 의미한다.
- C 언어에서는 다음 두 가지 방식으로 자료형 변환이 이루어진다.
⭕ 자동 자료형 변환 (Implicit Casting)
⭕ 강제 자료형 변환 (Explicit Casting)
2) 자동 자료형 변환
✅ 자동 형변환의 개념
- 자동 자료형 변환이란, C 컴파일러가 미리 정해놓은 규칙에 따라 자료형을 자동으로 변환하는 것을 의미한다.
- 주로 서로 다른 자료형 간의 연산이 일어날 때 발생한다.
- 연산 시에는 작은 크기의 자료형이 큰 크기의 자료형으로 자동 변환된다.
✅ Visual Studio 기준 자료형 크기 순서
크기 순 (작은 → 큰):
char < short < int < unsigned int < long < unsigned long < float < double < long double
2-1) 자동 형변환 규칙 예시
✅ 연산 시 규칙
- char + short → 자동으로 int로 변환되어 연산된다.
- int + float → int가 float으로 자동 변환되어 연산된다.
- float 간의 연산은 실제로 double로 변환되어 계산된다.
- ? + double → 모든 자료형은 double로 변환된다.
- ? + unsigned → unsigned로 변환된다.
✅ 대입문에서의 규칙
- 문자형 상수는 기본적으로 int형으로 간주된다.
- 대입문에서는 오른쪽 값이 왼쪽 변수의 자료형으로 변환된다.
- 실수형을 정수형 변수에 대입하면, 소수점 이하가 잘린다. ⚠️ (정밀도 손실)
⛏️ 주의할 점
- 실수형 → 정수형 변환 시 소수점 이하가 무조건 버려진다. (반올림 아님!)
- float 상수에 접미사 f를 붙이지 않으면, 기본적으로 double로 인식된다.
✅ 마무리 정리
1️⃣ 자동 형변환은 크기가 작은 자료형이 큰 자료형으로 변환되어 연산된다.
2️⃣ float 간의 연산도 실제로는 double로 변환되어 수행된다.
3️⃣ 대입문에서는 오른쪽 값이 왼쪽 변수의 자료형으로 변환된다.
4️⃣ 실수 → 정수 변환 시 소수점 이하는 모두 버려진다.
5️⃣ float 상수에는 반드시 접미사 f를 붙여야 float으로 인식된다.
💻 자동 형변환 예제 코드
#include <stdio.h>
int main() {
char a = 10;
short b = 20;
int result1 = a + b; // char + short → int로 자동 변환되어 연산
int c = 3;
float d = 4.5f;
float result2 = c + d; // int가 float으로 자동 변환
float e = 3.14f;
double f = 2.718;
double result3 = e + f; // float → double로 변환되어 연산
int i;
i = 3.99; // 실수 → 정수 대입: 소수점 이하 버려짐 (i = 3)
printf("result1 = %d\n", result1);
printf("result2 = %.2f\n", result2);
printf("result3 = %.3f\n", result3);
printf("i = %d\n", i);
return 0;
}
3) 강제 자료형 변환
✅ 강제 형변환의 개념
- 자동 형변환은 크기가 커지는 방향에서만 일어난다.
- 작은 자료형으로 변환하거나 명확히 지정된 형변환이 필요한 경우에는, 프로그래머가 직접 강제 변환을 해야 한다.
- 이때 사용하는 것이 캐스트 연산자(cast operator)이다.
- 형식: (자료형)변수
⛏️ 주의할 점
- 강제로 형변환하더라도, 값 손실(loss of data)이 발생할 수 있다.
- 특히 정수 → 실수, 실수 → 정수, 큰 타입 → 작은 타입으로 변환할 때 정밀도 문제에 주의해야 한다.
✅ 마무리 정리
1️⃣ 자동 형변환은 컴파일러가 판단하여 이루어진다.
2️⃣ 강제 형변환은 캐스트 연산자를 사용해 명시적으로 수행한다.
3️⃣ 강제 형변환 시 값 손실이 발생할 수 있으므로 주의해야 한다.
4️⃣ 형변환을 잘못하면 프로그램의 버그로 이어질 수 있다.
💻 강제 형변환 예제 코드
#include <stdio.h>
int main() {
double a = 5.67;
int b;
b = (int)a; // 강제 형변환: 소수점 이하 버려짐
printf("원래 값: %.2f\n", a);
printf("형변환 후 값: %d\n", b);
return 0;
}
✳️ 자료형 변환은 자료형 간 연산의 정확성, 안정성, 성능과 밀접한 관계가 있다.
✳️ 의도하지 않은 형변환은 논리 오류나 예측 불가능한 결과를 낳을 수 있으므로 반드시 이해하고 사용해야 한다.
'Language > C' 카테고리의 다른 글
| 📌 Chapter 05 - 연산자 - 증감 연산자 (0) | 2025.05.19 |
|---|---|
| 📌 Chapter 05 - 연산자 - 수식과 연산자 (0) | 2025.05.19 |
| 📌 Chapter 04 - 변수와 자료형 - 상수 (0) | 2025.05.17 |
| 📌 Chapter 04 - 변수와 자료형 - 변수의 사용 (0) | 2025.05.17 |
| 📌 Chapter 04 - 변수와 자료형 - 자료형 (0) | 2025.05.17 |