Programing/C++

[C++ 프로그래밍] 정수형 데이터와 Modifiers

유니얼 2024. 6. 21. 00:15
728x90

C++ 기초 프로그래밍: 정수형 데이터와 Modifiers

C++ 프로그래밍에서 정수형 데이터 타입은 매우 중요한 역할을 합니다. 다양한 크기와 특성을 가진 정수형 타입을 사용하여 프로그램의 메모리 사용을 최적화하고, 특정 요구사항에 맞는 정확한 데이터 처리를 할 수 있습니다. 이번 블로그 글에서는 C++에서 정수형 데이터 타입과 이들을 수정하는 데 사용되는 Integer Modifiers에 대해 알아보겠습니다.

정수형 데이터 타입

C++에서 정수형 데이터 타입은 기본적으로 int 타입을 포함하여, 크기와 부호(sign)에 따라 다양한 타입을 제공합니다. 각 타입은 특정한 크기와 범위를 가지며, 이를 통해 다양한 데이터 처리 요구를 충족시킬 수 있습니다.

기본 정수형 타입

  1. int: 기본 정수형 타입으로, 대부분의 컴파일러에서 4바이트를 차지합니다.
  2. short: 짧은 정수형 타입으로, 일반적으로 2바이트를 차지합니다.
  3. long: 긴 정수형 타입으로, 4바이트 또는 8바이트를 차지할 수 있습니다.
  4. long long: 더 긴 정수형 타입으로, 일반적으로 8바이트를 차지합니다.

부호가 있는 정수형 타입과 부호가 없는 정수형 타입

정수형 타입은 부호가 있는(signed) 타입과 부호가 없는(unsigned) 타입으로 나뉩니다.

  • signed: 기본 정수형 타입으로, 양수와 음수를 모두 표현할 수 있습니다.
  • unsigned: 부호가 없는 정수형 타입으로, 양수만을 표현할 수 있습니다. 이는 양수의 범위를 두 배로 확장할 수 있습니다.

예제 코드

다음은 다양한 정수형 데이터 타입과 그 크기를 출력하는 C++ 예제 코드입니다.

#include <iostream>

int main()
{
    signed int value1{10};
    signed int value2{-300};
    std::cout << std::endl;
    std::cout << "value1 : " << value1 << std::endl;
    std::cout << "value2 : " << value2 << std::endl;
    std::cout << "sizeof(value1) : " << sizeof(value1) << std::endl;
    std::cout << "sizeof(value2) : " << sizeof(value2) << std::endl;

    unsigned int value3{4};
    // unsigned int value4{-5}; // Compiler error.

    // short and long
    short short_var{-32768};                 //  2 Bytes
    short int short_int{455};                //
    signed short signed_short{122};          //
    signed short int signed_short_int{-456}; //
    unsigned short int unsigned_short_int{456};

    int int_var{55};           // 4 bytes
    signed signed_var{66};     //
    signed int signed_int{77}; //
    unsigned int unsigned_int{77};

    long long_var{88}; // 4 OR 8 Bytes
    long int long_int{33};
    signed long signed_long{44};
    signed long int signed_long_int{44};
    unsigned long int unsigned_long_int{44};

    long long long_long{888}; // 8 Bytes
    long long int long_long_int{999};
    signed long long signed_long_long{444};
    signed long long int signed_long_long_int{1234};
    unsigned long long int unsigned_long_long_int{1234};

    std::cout << std::endl;
    std::cout << "---------------------" << std::endl;
    std::cout << std::endl;

    std::cout << "Short variable : " << short_var << " , size : "
              << sizeof(short) << " bytes" << std::endl;

    std::cout << "Short Int : " << short_int << " , size : "
              << sizeof(short int) << " bytes" << std::endl;

    std::cout << "Signed short : " << signed_short
              << " , size : " << sizeof(signed short) << " bytes" << std::endl;

    std::cout << "Signed short int :  " << signed_short_int
              << " , size : " << sizeof(signed short int) << " bytes" << std::endl;

    std::cout << "unsigned short int :  " << unsigned_short_int
              << " , size : " << sizeof(unsigned short int) << " bytes" << std::endl;

    std::cout << std::endl;
    std::cout << "---------------------" << std::endl;
    std::cout << std::endl;

    std::cout << "Int variable :  " << int_var << " , size : "
              << sizeof(int) << " bytes" << std::endl;

    std::cout << "Signed variable " << signed_var << " , size : "
              << sizeof(signed) << " bytes" << std::endl;

    std::cout << "Signed int :  " << signed_int << " , size : "
              << sizeof(signed int) << " bytes" << std::endl;

    std::cout << "unsigned int :  " << unsigned_int << " , size : "
              << sizeof(unsigned int) << " bytes" << std::endl;

    std::cout << std::endl;
    std::cout << "---------------------" << std::endl;
    std::cout << std::endl;

    std::cout << "Long variable :  " << long_var << " , size : "
              << sizeof(long) << " bytes" << std::endl;

    std::cout << "Long int :  " << long_int << " , size : "
              << sizeof(long int) << " bytes" << std::endl;

    std::cout << "Signed long :  " << signed_long << " , size : "
              << sizeof(signed long) << " bytes" << std::endl;

    std::cout << "Signed long int : " << signed_long_int << " , size : "
              << sizeof(signed long int) << " bytes" << std::endl;

    std::cout << "unsigned long int : " << unsigned_long_int << " , size : "
              << sizeof(unsigned long int) << " bytes" << std::endl;

    std::cout << std::endl;
    std::cout << "---------------------" << std::endl;
    std::cout << std::endl;

    std::cout << "Long long : " << long_long << " , size : "
              << sizeof(long long) << " bytes" << std::endl;

    std::cout << "Long long int : " << long_long_int << " , size : "
              << sizeof(long long int) << " bytes" << std::endl;

    std::cout << "Signed long long : " << signed_long_long << " , size : "
              << sizeof(signed long long) << " bytes" << std::endl;

    std::cout << "Signed long long int : " << signed_long_long_int << " , size : "
              << sizeof(signed long long int) << " bytes" << std::endl;

    std::cout << "unsigned long long int : " << unsigned_long_long_int << " , size : "
              << sizeof(unsigned long long int) << " bytes" << std::endl;

    std::cout << std::endl;
    std::cout << "---------------------" << std::endl;

    return 0;

    // value1 : 10
    // value2 : -300
    // sizeof(value1) : 4
    // sizeof(value2) : 4

    // ---------------------

    // Short variable : -32768 , size : 2 bytes
    // Short Int : 455 , size : 2 bytes
    // Signed short : 122 , size : 2 bytes
    // Signed short int :  -456 , size : 2 bytes
    // unsigned short int :  456 , size : 2 bytes

    // ---------------------

    // Int variable :  55 , size : 4 bytes
    // Signed variable 66 , size : 4 bytes
    // Signed int :  77 , size : 4 bytes
    // unsigned int :  77 , size : 4 bytes

    // ---------------------

    // Long variable :  88 , size : 8 bytes
    // Long int :  33 , size : 8 bytes
    // Signed long :  44 , size : 8 bytes
    // Signed long int : 44 , size : 8 bytes
    // unsigned long int : 44 , size : 8 bytes

    // ---------------------

    // Long long : 888 , size : 8 bytes
    // Long long int : 999 , size : 8 bytes
    // Signed long long : 444 , size : 8 bytes
    // Signed long long int : 1234 , size : 8 bytes
    // unsigned long long int : 1234 , size : 8 bytes

    // ---------------------
}

결론

C++에서 정수형 데이터를 초기화하는 방법과 다양한 정수형 데이터 타입의 크기를 이해하는 것은 매우 중요합니다. 적절한 데이터 타입을 선택함으로써 메모리 사용을 최적화하고, 데이터 처리의 정확성을 높일 수 있습니다.

반응형