1. [전산 일반] 형 선언 (타입 선언), 형 변환 (타입 변환) 이란?
ㅇ 타입 선언, 형 선언 (Type Declaration, Typing)
- 미리 변수를 어떤 데이터형으로 사용할 지를 선언/지정하는 것
- 또는, 프로그래머가 새롭게 자료형을 정의하는 것
* 한편, `타입 선언`도, `변수 선언` 처럼, 타입에 이름 및 타입(자료형)을 지정하는 것임
ㅇ 타입 변환, 형 변환 (Type Conversion)
- 이미 선언/지정된 자료형을 다른 자료형으로 해석/변경하는 것
2. [전산 일반] 형 변환 (타입 변환)의 이유 및 종류
ㅇ 형 변환 (타입 변환)의 이유
- 혼합 형의 표현식을 단일하게 평가하기 위하여
- 원하는 형의 값을 얻기 위하여
ㅇ 형 변환 (타입 변환)의 종류
- 자동 형 변환 (암시적 형 변환, implicit)
. 컴파일러 등이 자동으로(알아서) 다른 자료형으로 형변환하는 것
- 강제 형 변환 (명시적 형 변환, explicit)
. 프로그래머가 직접 형변환하는 것
3. [C 언어/C++ 언어] 암묵적 형 변환, 명시적 형 변환
ㅇ 자동 형 변환 (암시적/암묵적 형 변환, implicit)
* 통상, `작은 크기 -> 큰 크기`, `정수형 -> 실수형`으로 변환
. 즉, 데이터손실이 가장 작은 방향으로 변환 : 형 확장 / 형 승격 (Type Promotion)
- 표현식 내 우선순위에 의한 자동 형 변환
. double > float > unsigned long > long > unsigned int > int >
unsigned short > short > unsigned char > char
.. 표현식 내 모든 float는 double로 변환 됨
.. short 및 char는 int로 변환됨
.. 여러 피연산자 중 하나가 double이면, 모두 double로 변환됨
- 대입연산에 의한 자동 형 변환
. 우변 자료형이 좌변 자료형으로 자동 형변환 (`=`의 왼쪽이 기준이 됨)
. 문자형(char)은, 정수형(int)으로 변환됨
. 실수형이 정수형으로 변환될 때, 소수점 이하는 절삭됨
ㅇ 강제 형 변환 (명시적 형 변환, explicit) : (Type Casting)
- 캐스트 연산자를 사용 : (괄호 사용)
. C 언어 형식 : (자료형) 표현식
.. 例) int a; (float) a; => 정수형 int를 실수형 float로 강제 형 변환
.. 例) (int) 3.8; => 3 (반올림 없이 소수점 이하 버리고 정수형으로 형 변환)
. C++ 언어 형식 : 자료형 (표현식)
.. C 언어와는 달리, 자료형 다음에 오는 표현식에 괄호로 감쌈
4. 암묵적인 자동 형 변환 例)
ㅇ [자바스크립트] ☞ 형변환 참조
ㅇ [파이썬] ☞ 형변환 참조