Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 표준에서 int와 long 타입의 크기는 얼마일까?

C++ 표준이 정수형 크기를 직접 규정하지 않는 이유

C++ 표준은 정수형 타입의 크기를 바이트 단위로 명시하지 않습니다. 대신 각 타입이 반드시 표현할 수 있어야 하는 최소 값 범위만을 규정합니다. 이 최소 범위로부터 해당 타입이 가져야 할 최소 비트 수를 쉽게 계산할 수 있습니다.

예를 들어, 표준에 따르면 int는 최소 16비트, long은 최소 32비트를 보장해야 하며, 실제 구현에서는 이보다 더 클 수 있습니다.

플랫폼별 일반적인 데이터 모델

표준 자체가 아니라 실제로 널리 사용되는 플랫폼별 크기는 다음과 같습니다.

  • 32비트 시스템 (ILP32)int, long, 포인터가 모두 32비트입니다.
  • 64비트 유닉스/리눅스 (LP64)long과 포인터는 64비트이며, int는 32비트입니다.
  • 64비트 윈도우 (LLP64)long long과 포인터는 64비트이며, longint는 모두 32비트입니다.

이식성을 위한 팁

플랫폼마다 타입 크기가 달라지므로, 정확한 비트 폭이 필요한 코드라면 <cstdint> 헤더에서 제공하는 고정 폭 정수형인 int32_t, int64_t, uint64_t 등을 사용하는 것이 안전합니다.