그냥 게임개발자

오버플로, 언더플로 본문

C++ 나만의 복습

오버플로, 언더플로

sudoju 2024. 4. 4. 21:48

오버플로우 흘럼넘친다라는 뜻이다.

 

컴퓨터에서는 어떤 타입의 허용범위를 넘으면 발생하는 에러를 오버플로우라고 한다.

예를 들어 signed int는 최대 Max치 허용범위는 2147483647이다.

21억4천7백4십8만3천6백4십7이다.

 

그렇다면 이 21억4천7백4십8만3천6백4십7을 벗어나는 숫자에 + 1을 하게되면  21억4천7백4십8만3천6백4십8이 아닌 

- 21억4천7백4십8만3천6백4십8로 돌아가게 된다.

이를 예측할 수  없는 행동 즉 UB(Unexcpected Behavior)라고도 한다.

 

간단하게 코드로 봐보자.

#include <iostream>

using namespace std;

int main()
{
    int a = 2147483647;
    cout << a << '\n';
    a++;
    cout << a << '\n';
}

 

결과물도 보자.

 

음 역시 컴퓨터는 거짓말을 하지 않아.

 

 

그러면 언더플로는 뭘까?

오버플로의 반댓말이지 않을까?

말 그대로 Min보다 결과값이 작아지게 되면 언더플로가 발생한다.

 

음 역시 잘된다.

'C++ 나만의 복습' 카테고리의 다른 글

float, double  (0) 2024.04.04
long long  (0) 2024.04.04
int, 4byte짜리 정수  (1) 2024.04.04
bool, 참과 거짓  (0) 2024.04.04
stoi()  (0) 2024.04.04