• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • C# 프로그래밍의 기초: 오버플로우와 언더플로우 이해하기
    2024년 02월 25일
    • 유니얼
    • 작성자
    • 2024.02.25.:33
    728x90

    프로그래밍을 하다 보면 다양한 데이터 타입을 사용하게 되며, 각 데이터 타입은 저장할 수 있는 값의 범위가 정해져 있습니다. 이 글에서는 C# 프로그래밍 언어에서 정수형 데이터 타입의 범위, 그리고 이 범위를 넘어설 때 발생하는 오버플로우(overflow)와 언더플로우(underflow) 현상에 대해 알아보겠습니다.

    정수형 데이터 타입의 범위

    C#에서는 여러 종류의 정수형 데이터 타입을 제공합니다. 가장 일반적으로 사용되는 두 가지 타입은 int와 long입니다.

    • int 데이터 타입은 32비트 정수를 저장할 수 있으며, -2,147,483,648에서 2,147,483,647까지의 범위를 가집니다.
    • long 데이터 타입은 64비트 정수를 저장할 수 있으며, 더 넓은 범위의 정수를 다룰 수 있습니다.

    오버플로우와 언더플로우

    • 오버플로우는 변수가 저장할 수 있는 범위를 초과하여 더 큰 값을 할당하려고 할 때 발생합니다. 예를 들어, int 타입의 변수에 2,147,483,647을 초과하는 값을 할당하려고 하면 오버플로우가 발생합니다.
    • 언더플로우는 변수의 최소값보다 작은 값을 할당하려고 할 때 발생합니다. int 타입의 변수에서 -2,147,483,648보다 작은 값을 할당하려고 하면 언더플로우가 발생합니다.

    실제 예시

    아래 C# 코드는 int 타입의 최대값과 최소값을 이용하여 오버플로우와 언더플로우 현상을 보여줍니다.

     

    using System;
    
    class Program
    {
    
        static void Main(string[] args)
        {
            // int형의 최대값 저장
            int maxInt = int.MaxValue;
            // 최대값에 1을 더하면 오버플로우 발생
            int overflow = maxInt + 1;
            // int형의 최소값 저장
            int minInt = int.MinValue;
            // 최소값에 1을 빼면 언더플로우 발생
            int underflow = minInt - 1;
    
            Console.WriteLine($"int의 최대값: {maxInt}");
            Console.WriteLine($"오버플로우 발생 후: {overflow}");
            Console.WriteLine($"int의 최소값: {minInt}");
            Console.WriteLine($"언더플로우 발생 후: {underflow}");
    
            // 결과
            // int의 최대값: 2147483647
            // 오버플로우 발생 후: -2147483648
            // int의 최소값: -2147483648
            // 언더플로우 발생 후: 2147483647
        }
    }

     

    이 코드를 실행하면 int의 최대값을 초과하는 연산에서 오버플로우가 발생하며, 결과값은 음수가 됩니다. 반대로, 최소값보다 작은 값을 빼려고 하면 언더플로우가 발생하고 결과값은 양수가 됩니다. 이는 정수형 데이터 타입이 가질 수 있는 값의 범위가 순환 구조를 이루고 있음을 의미합니다.

    결론

    오버플로우와 언더플로우는 프로그램에서 예상치 못한 결과를 초래할 수 있는 중요한 개념입니다. 이를 이해하고 적절히 대처하는 것은 안정적인 소프트웨어 개발에 있어 매우 중요합니다. 특히, 금융 계산이나 정밀한 수치를 다루는 프로그램을 개발할 때는 이러한 현상을 면밀히 고려해야 합니다. C#을 포함한 많은 프로그래밍 언어들은 이러한 상황을 관리하기 위한 다양한 메커니즘을 제공하니, 이를 적극 활용하여 보다 견고한 애플리케이션을 개발해야 합니다.

     

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바