7.3 자료형 크기 구하기

이번에는 자료형(타입)의 크기를 바이트(byte) 단위로 구하는 sizeof 연산자에 대해 알아보겠습니다. 먼저 sizeof 연산자는 다음과 같은 형식으로 사용합니다.

  • sizeof 표현식
  • sizeof(자료형)
  • sizeof(표현식)

다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

integer_sizeof.c

#include <stdio.h>

int main()
{
    int num1 = 0;
    int size;

    size = sizeof num1;    // 변수 num1의 자료형 크기를 구함

    printf("num1의 크기: %d\n", size);

    return 0;
}

실행 결과

num1의 크기: 4

sizeof 표현식 형식으로 자료형의 크기를 구할 수 있습니다. 표현식은 변수, 상수, 배열 등 프로그래머가 만들어낸 요소를 뜻합니다. 여기서는 정수형 변수 num1의 자료형 크기를 구하였고 4가 출력되었습니다.

단, sizeof int와 같은 형식으로는 자료형의 크기를 구할 수 없습니다. 자료형의 크기를 직접 구하려면 다음과 같이 sizeof(자료형) 형식으로 사용합니다.

int size;

size = sizeof(int);

sizeof(표현식) 형식도 사용할 수 있습니다.

int num1 = 0;
int size;

size = sizeof(num1);

이제 각 정수 자료형의 크기를 구해보겠습니다(Visual Studio, Windows).

integer_type_sizeof.c

#include <stdio.h>

int main()
{
    printf("char: %d, short: %d, int: %d, long: %d, long long: %d\n",
        sizeof(char),        // 1: sizeof로 char 자료형의 크기를 구함
        sizeof(short),       // 2: sizeof로 short 자료형의 크기를 구함
        sizeof(int),         // 4: sizeof로 int 자료형의 크기를 구함
        sizeof(long),        // 4: sizeof로 long 자료형의 크기를 구함
        sizeof(long long)    // 8: sizeof로 long long 자료형의 크기를 구함
    );

    return 0;
}

실행 결과

char: 1, short: 2, int: 4, long: 4, long long: 8

출력 결과에 따르면 char는 1바이트, short는 2바이트, int long은 4바이트, long long은 8바이트입니다(여기서 unsigned가 붙어도 크기는 같습니다).