공부/C++ \C#

정수의 합이 오버 플로우 났을 때

Lero God 2023. 5. 3. 23:47

정수의 합이 오버 플로우가 났을 때 더하는 정수들을 더 큰 자료형으로 캐스팅 한 후에 더한다.

더한 값을 동일하게 큰 자료형에 저장하면 오버 플로우가 나지 않고 정상적인 합을 구할 수 있다.

int32_t num1 = INT32_MAX;
int32_t num2 = INT32_MAX;

// num1 + num2 의 값은 오버플로우가 나서 sum 은 -2 이다.
int32_t sum = num1 + num2;

//  num1 + num2 의 값은 이미 오버플로우가 났기 때문에 int64에 저장해도 sum 은 -2 이다.
int64_t sum = num1 + num2;

// num1 과 num2 를 int64_t 형으로 캐스팅하면 오버플로우가 나지 않고 정상적인 값이 나온다.
int64_t sum = (int64_t)num1 + (int64_t)num2;

'공부 > C++ \C#' 카테고리의 다른 글

c# try catch finally  (0) 2023.08.01
c# init 키워드  (0) 2023.07.26
partial 키워드  (0) 2020.07.14
C++ 프로그래밍 : 런타임 타입 정보(Runtime Type Information)  (0) 2020.06.03
인라인 (Inline)  (0) 2018.08.08