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
  • 2016년 01월 05일에 작성됨

조회수 454


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();
  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close