728x90
728x90
여러분은 이전 게시글에서 각 자료형이 특정한 범위를 가지고 있음을 알고 간단한 사칙연산을 해보았다.
Overflow
그러면 그 자료형의 범위를 넘어선 값이 담기게 되면 어떻게 될까?
int x = 2147483647;
x += 1;
int 자료형은 이전에도 배웠다시피 최대 2147483647의 값을 가질 수 있다. 그런데 지금 2147483647으로 초기화 된 x에 1을 더하려 하고 있다. 어떻게 될까?
using System;
namespace TrainCsharp
{
class Program
{
static void Main(string[] args)
{
int x = 2147483647;
x += 1;
Console.WriteLine("x의 값은 " + x + "입니다.\n");
}
}
}
참고로 위 코드처럼 서로 다른 자료형끼리 묶어서 같이 출력하려는 경우는 +로 이어주면 된다.
위 코드를 컴파일해서 실행해보자.
x의 값은 -2147483648입니다.
int 자료형의 최소값이 나와버렸다. 이게 무슨 일일까?
이 현상은 오버플로우라고 부르는 현상이다. 위 코드처럼 수용할 수 있는 한계를 벗어난 값이 들어갈 경우 그 값을 담지 못하여 그 반대 값의 처음부터 시작한다.
오버플로우를 자세히 이해하기 위해선 컴퓨터 메모리와 관련된 지식이 필요하지만 프로그래밍을 처음 배우는 여러분은 "자료형 고유의 한계보다 더 큰 값을 넣으려고 하면 의도하지 않은 값이 나오니 수치와 관련된 계산을 할 때는 이를 조심해야 된다." 정도로 이해하면 되겠다.
그러면 -2147483648에 1을 빼면 어떻게 될까? 직접 해보시라.
이렇게 우리는 오버플로우에 대해 알게 되었다. 오버플로우는 대부분의 프로그래밍 언어에 존재하는 현상이니 프로그래밍을 할 때 항상 조심하도록 하자.
728x90
728x90
'C# > C# 기초 강의' 카테고리의 다른 글
C# 프로그래밍 강좌 6 - 변수와 자료형 3 (실수) (0) | 2022.01.01 |
---|---|
C# 프로그래밍 강좌 4 - 변수와 자료형 1 (0) | 2021.08.02 |
C# 프로그래밍 강좌 3 - WriteLine, Write으로 출력하기 (0) | 2021.07.13 |
C# 프로그래밍 강좌 2 - Hello World! 코드 살펴보기 (0) | 2021.07.13 |
C# 프로그래밍 강좌 1 - 윈도우에서 개발환경 구성하기 (0) | 2021.07.12 |