본문 바로가기
프로그래밍 언어

타입 승격 (Type Promotion)

by Jo_Wick 2025. 9. 21.
반응형

타입 승격 연산이나 함수 호출 과정에서 더 작은 범위나 낮은 정밀도의 타입이 자동으로 더 큰 범위나 높은 정밀도의 타입으로 바뀌는 것이라고 정의한다.


정수 승격

char c = 100;
cout << (c + 1) << endl;  // c가 int로 승격되어 int 연산
  • bool, char, short 같은 작은 정수형은 산술 연산에 들어가면 자동으로 int로 변환된다.

 

산술 변환 (int 형 변수끼리 / 나눗셈 연산을 할때)

int a = 1, b = 3;

// 1.
cout << a / b << '\n'; // 0

// 2.
cout << (double) a / b << '\n'; // 0.333333

// 3.
cout << a / (double) b << '\n'; // 0.333333

// 4.
cout << (double) (a / b) << '\n'; // 0

 

1의 경우

당연히 int는 정수이기 때문에 정수 부분만을 출력한다.

 

2, 3의 경우

int 형 a, b 중 하나라도 double 형으로 형 변환을 했을 때 double로 변환하여 결과 값을 출력한다.


4의 경우

이미 계산된 결과 값을 double로 형 변환을 하기 때문에 0이라는 결과가 출력된다.

 

 

 

C++ / Java / C# 등 정적 타입 언어에서는 더 큰 범위의 타입을 따라간다.

Python / JavaScript 등 동적 타입 언어에서는 알아서 형 변환을 하여 결과 값을 출력한다.

 

반응형

'프로그래밍 언어' 카테고리의 다른 글

정렬의 원리? 기준?  (0) 2025.10.04
로케일(Locale)이란?  (0) 2025.10.01
버퍼링 (Buffering)  (0) 2025.09.19
스트림 (Stream)  (0) 2025.09.19
강타입 (Strongly Typed) VS 약타입 (Weakly Typed)  (0) 2025.09.18

댓글