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

C++ 표준에 따른 int, long 자료형의 크기는 얼마일까?

C++에서 intlong 자료형의 크기는 고정되어 있지 않으며, 시스템 아키텍처와 운영체제에 따라 달라집니다. 이 글에서는 각 환경별 데이터 모델 표준과 실제 자료형 크기를 살펴보겠습니다.

32비트 시스템: ILP32 표준

32비트 시스템에서는 일반적으로 ILP32 표준을 따릅니다. 이 표준에서는 int, long, 그리고 포인터 변수가 모두 32비트입니다.

64비트 시스템: LP64와 LLP64

64비트 시스템은 운영체제에 따라 두 가지 데이터 모델로 나뉩니다.

  • 리눅스(Linux) — LP64: long과 포인터는 64비트이지만, int는 32비트입니다.
  • 윈도우(Windows) — LLP64: long long은 64비트이지만, intlong은 여전히 32비트입니다.

예제 코드

sizeof 연산자를 활용하면 현재 시스템에서 각 자료형의 실제 크기를 확인할 수 있습니다.

#include <iostream>
using namespace std;

int main() {
    cout << "Size of int: " << sizeof(int) * 8 << " bits" << endl;
    cout << "Size of long: " << sizeof(long) * 8 << " bits" << endl;
    cout << "Size of long long: " << sizeof(long long) * 8 << " bits" << endl;
    return 0;
}

실행 결과

Size of int: 32 bits
Size of long: 32 bits
Size of long long: 64 bits

참고: 이식 가능한 코드 작성하기

C++ 표준은 int의 최소 크기(16비트 이상)만 보장할 뿐 정확한 크기를 명시하지 않습니다. 따라서 플랫폼 간 이식성이 중요한 코드라면 <cstdint> 헤더에서 제공하는 고정 폭 정수형(int32_t, int64_t 등)을 사용하는 것이 좋습니다. 이를 통해 어떤 시스템에서든 일관된 자료형 크기를 보장받을 수 있습니다.