int, long타입의 크기는 몇이에요?

C++ 의 타입 사이즈에 대해서 알고 싶은데요

컴파일러나 아키텍처(16, 32, 64비트)에 따라 달라지는 건 아는데 C++에서 표준이 따로 있나요?

제가 32비트 아키텍처에서 비주얼 스튜디오 2008로 돌렸을 때 이렇게 나왔어요

  1. char : 1 byte
  2. short : 2 bytes
  3. int : 4 bytes
  4. long : 4 bytes
  5. float : 4 bytes
  6. double : 8 bytes

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    C++ 표준에서는 자료형의 최대 범위에 관해서는 정해놓은 게 없습니다

    다만 자료형이 나타낼 수 있어야 하는 최소 범위는 정해져 있기 때문에 이걸로 각 자료형이 최소 몇 비트가 되야하는지,

    CHAR_BIT(한 바이트가 몇 비트로 이뤄졌는지 나타냄)로 각 자료형이 최소 몇 바이트가 돼야 하는지 알 수 있습니다

    아, 그리고 char 자료형은 항상 1바이트 아니면 CHAR_BIT비트 입니다.

    자료형의 최소 범위


    1. signed char: -127에서 127
    2. unsigned char: 0에서 255
    3. "plain" char: signed char나 unsigned char랑 같음(구현 방법에 따라 다름)
    4. signed short: -32767에서 32767
    5. unsigned short: 0에서 65535
    6. signed int: -32767에서 32767
    7. unsigned int: 0에서 65535
    8. signed long: -2147483647에서 2147483647
    9. unsigned long: 0에서 4294967295
    10. signed long long: -9223372036854775807에서 9223372036854775807
    11. unsigned long long: 0에서 18446744073709551615

    C/C++의 자료형의 크기는 다음을 만족하는 어떤 값이든 될 수 있습니다.

    1. sizeof(type)*CHAR_BIT 이 자료형의 최소 범위를 커버할 수 있을 만큼 커야 한다
    2. 자료형 크기의 대소 관계는 동일하다 ex) sizeof(int) < sizeof(long)

    내 개발 환경에서 자료형 범위 알아내기


    C의 <limits.h>나 C++의 <climits>, std::numeric_limits을 쓰면 자료형의 범위를 알아낼 수 있습니다

    정수 범위를 구하는 예제를 드릴게요

    //C:
    #include <limits.h>
    const int min_int = INT_MIN;
    const int max_int = INT_MAX;
    
    //C++:
    #include <limits>
    const int min_int = std::numeric_limits<int>::min();
    const int max_int = std::numeric_limits<int>::max();
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.