int, long타입의 크기는 몇이에요?
조회수 21173회
C++ 의 타입 사이즈에 대해서 알고 싶은데요
컴파일러나 아키텍처(16, 32, 64비트)에 따라 달라지는 건 아는데 C++에서 표준이 따로 있나요?
제가 32비트 아키텍처에서 비주얼 스튜디오 2008로 돌렸을 때 이렇게 나왔어요
- char : 1 byte
- short : 2 bytes
- int : 4 bytes
- long : 4 bytes
- float : 4 bytes
- double : 8 bytes
1 답변
-
C++ 표준에서는 자료형의 최대 범위에 관해서는 정해놓은 게 없습니다
다만 자료형이 나타낼 수 있어야 하는 최소 범위는 정해져 있기 때문에 이걸로 각 자료형이 최소 몇 비트가 되야하는지,
CHAR_BIT(한 바이트가 몇 비트로 이뤄졌는지 나타냄)
로 각 자료형이 최소 몇 바이트가 돼야 하는지 알 수 있습니다아, 그리고 char 자료형은 항상 1바이트 아니면
CHAR_BIT
비트 입니다.자료형의 최소 범위
- signed char: -127에서 127
- unsigned char: 0에서 255
- "plain" char: signed char나 unsigned char랑 같음(구현 방법에 따라 다름)
- signed short: -32767에서 32767
- unsigned short: 0에서 65535
- signed int: -32767에서 32767
- unsigned int: 0에서 65535
- signed long: -2147483647에서 2147483647
- unsigned long: 0에서 4294967295
- signed long long: -9223372036854775807에서 9223372036854775807
- unsigned long long: 0에서 18446744073709551615
C/C++의 자료형의 크기는 다음을 만족하는 어떤 값이든 될 수 있습니다.
- sizeof(type)*CHAR_BIT 이 자료형의 최소 범위를 커버할 수 있을 만큼 커야 한다
- 자료형 크기의 대소 관계는 동일하다 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();
댓글 입력