정수의 합이 오버 플로우가 났을 때 더하는 정수들을 더 큰 자료형으로 캐스팅 한 후에 더한다.
더한 값을 동일하게 큰 자료형에 저장하면 오버 플로우가 나지 않고 정상적인 합을 구할 수 있다.
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 |